[英]Ruby Blocks inside module or class
Ruby中的塊可以寫在類或模塊內部嗎? 根據文檔,可以使用yield的方法調用一個塊...即它也應該可以從類中的方法調用。 但是對於下面的代碼,我得到以下錯誤:
$ ruby lesson1.rb追溯(最近一次通話最近):2:從lesson1.rb:1:in
<main>' 1: from lesson1.rb:2:in
in'lesson1.rb:9:in<class:Sample>': undefined method
M1 :: Sample:Class的<class:Sample>': undefined method
say_hi'(NoMethodError)
文件名:lessson1.rb
module M1
class Sample
def say_hi( name )
puts "Hello, #{name}! Entered the method"
yield
puts "Exiting the method"
end
say_hi("Block") do
puts "Good Day"
end
end
end
是的,您可以在類/模塊級別的方法調用中使用塊。 出現錯誤的原因不是由於塊,而是因為您在類的上下文中調用say_hi
,因此它正在查找類本身的方法,而不是類的實例的方法。 您將say_hi
定義為實例方法,因此在類級別上不可用。 如果將其更改為def self.say_hi( name )
,它將正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.