다음 코드를 사용하면 표시 한 행에서 문제가 발생합니다.<<를 사용하여 문자열을 추가하는 것이 예상대로 작동하지 않지만 +를 사용하여
arr = 'I wish I may I wish I might'.split
dictionary = Hash.new
arr.each_with_index do |word, index|
break if arr[index + 2] == nil
key = word << " " << arr[index + 1] #This is the problem line
value = arr[index + 2]
dictionary.merge!({ key => value }) { |key, v1, v2| [v1] << v2 }
end
puts dictionary
이 코드를 실행, 나는 다음과 같은 출력 예상 : 그러나
{"I wish"=>["I", "I"], "wish I"=>["may", "might"], "I may"=>"I", "may I"=>"wish"}
, 내가 대신
{"I wish"=>["I may", "I"], "wish I"=>["may I", "might"], "I may"=>"I wish", "may I"=>"wish I"}
내가 찾은되어 얻을 무엇을하는 나는 문제 라인을 대체하는 경우 와 함께
key = word + " " + arr[index + 1]
모든 것이 예상대로 작동합니다. 예기치 않은 동작을 일으킨 첫 번째 버전의 내 라인에 대해서는 무엇입니까?