亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為Ruby模塊中的每個方法調用執行代碼

為Ruby模塊中的每個方法調用執行代碼

叮當貓咪 2019-12-20 10:28:16
我正在Ruby 1.9.2中編寫一個定義幾種方法的模塊。當調用這些方法中的任何一個時,我希望它們中的每一個都首先執行特定的語句。module MyModule  def go_forth    a re-used statement    # code particular to this method follows ...  end  def and_multiply    a re-used statement    # then something completely different ...  endend但是我想避免將a re-used statement代碼明確地放在每個方法中。有辦法嗎?(如果有關系,a re-used statement將在調用每個方法時打印其自己的名稱。它將通過的某些變體來實現puts __method__。)
查看完整描述

3 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

您可以method_missing通過代理模塊實現它,如下所示:


module MyModule


  module MyRealModule

    def self.go_forth

      puts "it works!"

      # code particular to this method follows ...

    end


    def self.and_multiply

      puts "it works!"

      # then something completely different ...

    end

  end


  def self.method_missing(m, *args, &block)

    reused_statement

    if MyModule::MyRealModule.methods.include?( m.to_s )

      MyModule::MyRealModule.send(m)

    else

      super

    end

  end


  def self.reused_statement

    puts "reused statement"

  end

end


MyModule.go_forth

#=> it works!

MyModule.stop_forth

#=> NoMethodError...


查看完整回答
反對 回復 2019-12-20
  • 3 回答
  • 0 關注
  • 768 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號