簡體   English   中英

將模塊方法調用到Ruby中的另一個模塊中

[英]calling module method into another module in Ruby

FIle module.rb

module CardExpiry
  def check_expiry value
    return true
  end
end

文件include.rb

#raise File.dirname(__FILE__).inspect
require "#{File.dirname(__FILE__)}/module.rb"

 module Include
     include CardExpiry
  def self.function 
    raise (check_expiry 1203).inspect
  end
end

調用

Include::function

這可能嗎 ?

調用時觸發錯誤:

`function': undefined method `check_expiry' for Include:Module (NoMethodError)

你偶然發現了includeextend區別

  • include使包含模塊中的方法可用於您的類的實例
  • extend使得包含的模塊中的方法在類中可用

使用self.method_name定義方法並在該方法中訪問selfself將綁定到當前類。

但是, check_expiry包含在內,因此僅在實例端可用。

要解決此問題,請extend CardExpiry ,或使check_expiry成為類方法。

我更詳細地看了一下你的問題,問題是你的module.rb文件:

module CardExpiry
  def self.check_expiry value
    return true
  end
end

首先,文件中缺少一個end - defmodule需要關閉。

第二,神奇的self. def行中將方法轉換為偽全局函數 - 這個答案比我能更好地解釋它

此外,要調用該方法,您需要使用:

raise (CardExpiry::check_expiry 1203).inspect

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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