Я написал небольшую программу для тестирования Textmate 2 (я довольно новичок в Ruby), и он выплевывает, что 4 + 9 = 49 вместо 13 по какой-то причине.
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
Это потому, что gets возвращает строку:
gets
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
Если бы вы сделали puts printMe.inspect, вы бы сами убедились, что это "49", а не 49, и что a и b являются строками.Дополнительные советы по отладке см. В Как отлаживать сценарии Ruby?
puts printMe.inspect
"49"
49
a
b
По умолчанию он обрабатывает ввод как строку. Попробуйте:
def add(x,y) (x.to_i + y.to_i) end
Кроме того, нет необходимости возвращаться в ruby или помещать в переменную c, он автоматически вернет последнюю строку кода в качестве вывода