【发布时间】:2016-08-19 01:46:29
【问题描述】:
我的程序中有一个 Team 类,我正在尝试使用 method_missing 但是当方法不存在时,它没有运行该函数,而是给了我一个错误:"undefined method `hawks' for Team:Class (NoMethodError)"
我的代码如下:
class Team
attr_accessor :cust_roster, :cust_total_per, :cust_name, :cust_best_player
@@teams = []
def initialize(stats = {})
@cust_roster = stats.fetch(:roster) || []
@cust_total_per = stats.fetch(:per)
@cust_name = stats.fetch(:name)
@cust_best_player = stats.fetch(:best)
@@teams << self
end
def method_missing(methId)
str = methID.id2name
Team.new(roster:[], per: 0, name: str.uppercase, best: 0)
end
class <<self
def all_teams
@@teams
end
end
end
hawks = Team.hawks
【问题讨论】:
-
你不是说
hawks = Team.new.hawks吗?Team.hawks尝试调用不存在的类方法hawks。 -
或者
def self.method_missing? -
不,这不起作用,因为 Team.new 已经是一个函数,它不会运行 method_missing
-
@ScottJ
stack level too deep (SystemStackError) -
尝试做
hawks = Team.new。然后做hawks = hawks.hawks
标签: ruby method-missing