Непонятно, где это предназначено для использования, но вы не можете return
сделать это внутри цикла.
Код вероятно:
def squared
10.times do |num|
square = num * num
yield num, square
end
end
Где бы вы назвали это как-то внешне:
squared do |num, square|
puts "The square of #{num} is #{square}"
end
Упрощенная версия этого кода:
def square(num)
return num * num
end
Где здесь return
находится в допустимом контексте. Ruby стремится избегать явных return
операторов , если только не намерено избегать выполнения оставшейся части метода , например:
def square(num)
if (num > 1000)
return "That number is way too big!"
end
num * num
end
Здесь последним оператором для выполнения (num * num
) является неявное возвращаемое значение метода. Многие блоки работают таким образом, даже if
, где в операторах Ruby if
возвращаются значения:
choice = if (num > 10)
"big"
else
"small"
end
Где choice
заканчивается одной из этих двух строк в зависимости от условий.