해시 쌍을 인쇄 할 때 "문자열이 Fixnum이라는 강요 할 수 없다", 그리고 물론 데이터 구조 부분에, 내가 시도하는 동안 다음루비 : 난 그냥 코드 카데미에서, 루비 어제 배우기 시작
my_hash = {1=>2,3=>4,"5"=>"6"}
my_hash[7] = my_hash[1]+my_hash[3]
my_hash.each { |k,v|
# Here I want to print key and values like "Key: Value"
}
4 호선에서
는
이 작동 :
puts "#{k}: #{v}"
이되지 않습니다
puts k+": "+v
String can't be coerced into Fixnum
이 있습니다. 왜? 방금 사전 키와 값을 인쇄하고 있습니다. 나는 아무것도 다른 것에 typecasting하지 않습니다. 뭐가 문제 야?
첫 번째 해시의 k, v는 1 => 2이므로 k가 v라는 것을 의미합니다. v class는 Fixnum이므로 문자열 인 ":"을 추가 할 수 없으며 루비는이를 허용하지 않습니다. "# {k} : # {v}"를 사용하는 것이 가장 좋은 해결책이라고 생각하거나 "k.to_s +": "+ v.to_s"를 사용할 수 있습니다. –
예! 방금 이렇게했습니다. ===>'puts k.to_s + ":"+ v.to_s' Ruby에서'+'는 print 문에 숫자가 사용되면 연결을 의미하지 않습니다. –
그래 맞아! 그리고 한 가지 더 :'to_s'는'Class' 클래스의 메소드입니다. 그래서 모든 변수는 그 함수를 가지고 있습니다. 심지어는'nil'이기 때문에 자유롭게 사용하십시오 –