Мені було цікаво, чи можливо щось подібне сказати, що ми маємо
def call_something
yield a
end
де a - невизначена змінна? Чи можливо таке, і якщо так, то можете навести приклад того, як це може бути корисним?
Я знаю, що ви можете передавати аргументи, щоб поступитися, але поки що я знаю, ви можете передавати лише фактичні аргументи, які мають фактичні значення.
Щоб пояснити, я мав на увазі приблизно таке:
class A
def initialize
print "Enter a value: "
@a = gets.chomp
end
def m
yield @a
end
end
a = A.new
a.m do |x|
puts "You entered #{x}"
end
Де ви могли б щось подати, а потім передати блок, використовуючи це "щось" як аргумент.
Відповіді:
1 для відповіді № 1Навіть якби ви могли, я не впевнений, що це мало б сенс використовувати це значення в переданому блоці вам довелося б призначити його ідентифікатору:
call_something do |arg|
# you want `arg` to be the "unidentified" value
end
На той момент це "не та сама" неідентифікована змінна ", про яку ви говорили раніше, і єдиний спосіб, яким ви насправді можете це представити, - це nil
. Тож ти можеш просто пройти nil
на першому місці