Почему Ruby объединяет вместо добавления 2 значений? - PullRequest
0 голосов
/ 14 декабря 2011

Я написал небольшую программу для тестирования 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

Ответы [ 3 ]

7 голосов
/ 14 декабря 2011

Это потому, что 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
0 голосов
/ 14 декабря 2011

Если бы вы сделали puts printMe.inspect, вы бы сами убедились, что это "49", а не 49, и что a и b являются строками.Дополнительные советы по отладке см. В Как отлаживать сценарии Ruby?

0 голосов
/ 14 декабря 2011

По умолчанию он обрабатывает ввод как строку. Попробуйте:

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

Кроме того, нет необходимости возвращаться в ruby ​​или помещать в переменную c, он автоматически вернет последнюю строку кода в качестве вывода

...