2011-12-13 3 views
0

Textmate 2 (나는 루비에 대해 상당히 익숙 함)를 시험해보기 위해 작은 프로그램을 작성했으며 어떤 이유로 든 4 + 9 = 49 대신에 13을 뱉어 냈습니다. gets 문자열 반환하기 때문에Ruby가 왜 2 개의 값을 더하는 대신 연결 되는가?

def add(x,y) 
    c = x + y 
    return c 
end 

puts "please enter a value " 
a = gets.chomp 
puts "please enter another value " 
b = gets.chomp 

printMe = add(a,b) 

puts printMe 
+7

"4"+ "9"가 "49"이기 때문에 다음을 참조하십시오. – pilcrow

+0

이 질문에서 좋은 질문은 문자열과 숫자의 차이점을 이해합니까? "4"+ "9"= "49"는 즉시 일어난 일에 대한 이해를 촉발 시켰습니다. –

답변

7

그건 :

def add(x,y) 
    c = x + y 
end 

puts "please enter a value " 
a = gets.to_i 
puts "please enter another value " 
b = gets.to_i 

printMe = add(a,b) 

puts printMe 
+1

'a = gets.to_i' 할 것입니다 (chomping 없음). – steenslag

+0

@steenslag 감사합니다! –

0

그것은 내가 생각 기본적으로 문자열로 입력을 치료하는 것을 시도 : 또한

def add(x,y) 
    (x.to_i + y.to_i) 
end 

, 필요 루비에 돌아 오지하거나 변수 C에 놓으면 자동으로 최종 코드 행을 출력으로 반환합니다.

+0

gets.to_i 접근 방식만큼 편리하지 않거나 감각이 없습니다. 하나가 add ("x", "y")를 제공하면, "xy"와 다른 결과를 얻습니다. 그리고 이는 프로그램의 가독성을 위해 좋지 않습니다. – bcc32

0

puts printMe.inspect의 경우 "49"이 아니라 "49"이고 그 중 ab은 문자열임을 직접 확인할 수 있습니다. 더 많은 디버깅 힌트를 보려면 How do I debug Ruby scripts?

관련 문제