2012-11-23 3 views
3

방금 ​​Ruby를 배우기 시작했는데 오류의 원인을 불확실합니다. 나는 내 마지막 박았 문에서 루비 1.9.3Ruby가 문자열과 정수를 같은 줄에 넣습니다.

puts 'What is your favorite number?' 
fav = gets 
puts 'interesting though what about' + (fav.to_i + 1) 

in `+': can't convert Fixnum into String (TypeError) 

를 사용하고, 나는 그것이 문자열과 계산의 간단한 조합으로 생각했다. 여전히 그래도 작동하지 않는 이유를 이해하지 못합니다.

답변

3

(fav.to_i + 1)은 정수를 반환하고 루비는 암시 적 유형 변환을 수행하지 않습니다. 문자열에 추가하려면 (fav.to_i + 1).to_s을 수행하여 직접 변환해야합니다.

자주 함께 기본적으로

puts "interesting though what about #{fav.to_i + 1}?" 
# => interesting though what about 43? 

("합치") 문자열을 추가하지 않고 있음을 "문자열 보간"를 사용할 수 있습니다 루비에서

+0

이렇게 문자열과 같은 종류의 문자열입니까? 정수는 문자열과 혼합 할 수 없습니까? 해결책을 가져 주셔서 감사합니다! – catchmikey

+0

예, 일종의 : [여기에 대한 좋은 읽을 거리] (http://www.rubyfleebie.com/ruby-is-dynamically-and-strongly-typed/). –

7

#{} 제품 내부는 평가를 문자열로 변환하고, 포함에 삽입됩니다 끈. 이것은 큰 따옴표로 묶인 문자열에서만 작동합니다. 작은 따옴표로 묶인 문자열에서는 정확히 무엇을 넣을 수 있습니까?

puts 'interesting though what about #{fav.to_i + 1}?' 
# => interesting though what about #{fav.to_i + 1}? 
관련 문제