Вы не можете использовать локальные переменные, определенные вне метода в этом методе.Вместо этого вам нужно передать в качестве аргумента:
def mul(num1, num2)
puts num1 * num2
end
Вам также не нужно использовать одинаковые имена переменных, используйте то, что имеет смысл в контексте метода:
def mul(a, b)
puts a * b
end
mul(2, 3)
# prints 6
Методы обычно становятся более универсальными, если они делают одну вещь.Вышеуказанная реализация умножает a
и b
, а затем печатает результат через puts
.Давайте переместим печать за пределы метода:
def mul(a, b)
a * b
end
puts mul(2, 3)
# prints 6
Теперь мы можем выполнять фактические вычисления:
x = mul(2, 3) #=> 6
y = mul(2, 5) #=> 10
puts mul(x, y)
# prints 60
Это было бы невозможно с вариантом, включающим puts
.
С пользовательским вводом и выводом: (используя целые числа для демонстрационных целей)
print "first factor: "
num1 = gets.to_i
print "second factor: "
num2 = gets.to_i
puts "#{num1} * #{num2} = #{mul(num1, num2)}"
Обратите внимание, что #{...}
необходим для интерполяции других значений.
Примерсеанс:
first factor: 2
second factor: 3
2 * 3 = 6
Чтобы иметь различный вывод в зависимости от заданного оператора, вам нужно условное выражение, например: case
:
op = gets.chomp
case op
when 'mul'
puts mul(num1, num2)
when 'add'
puts add(num1, num2)
# ...
end
Надеюсь, этоначну.