簡體   English   中英

模塊或類中的Ruby塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM