Я понял, как работает ruby block
.
block_test.rb
def foo
yield if block_given?
end
my_block = foo { puts "hello" }
если я бегу, ruby block_test.rb
. Конечно, выведите «привет», как вы и ожидали.
hello
Но мой вопрос: когда я выполнил блок ruby? Я нигде не вызывал метод foo.
Я не писал - foo()
и тому подобное.
# I defined `foo` method here as [If a block has been given, execute it.] but did not call.
def foo
yield if block_given?
end
# I also defined block of `foo` as [print 'hello'] and store into `my_block` variable.
# But I did not say execute `foo`. Did I?
my_block = foo { puts "hello" }
Поэтому я предполагаю, что .. Когда вы объявляете блок, это неявно означает, что он выполнит метод с тем же именем блока
Пожалуйста, поправьте меня, если я что-то упустил.