加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 来自超类的未初始化常量

发布时间:2020-12-17 02:35:42 所属栏目:百科 来源:网络整理
导读:我在Foo和Foo2类中有一个FUU constante,为了干掉我的代码,我在BaseStuff超类中移动了一个方法.像这样: class BaseStuff def to_s FUU endendclass Foo BaseStuff FUU = "ok"endclass Foo2 BaseStuff FUU = "ok2"end 但我的问题是,之后: a = Foo.newputs a.
我在Foo和Foo2类中有一个FUU constante,为了干掉我的代码,我在BaseStuff超类中移动了一个方法.像这样:

class BaseStuff
  def to_s
    FUU
  end
end

class Foo < BaseStuff
  FUU = "ok"
end

class Foo2 < BaseStuff
  FUU = "ok2"
end

但我的问题是,之后:

a = Foo.new
puts a.to_s

我收到此错误:

NameError: uninitialized constant BaseStuff::FUU

有没有最好的做法来解决这个问题?

解决方法

class BaseStuff
  FUU = nil
  def to_s
    self.class::FUU
  end
end

class Foo < BaseStuff
  FUU = "ok"
end

class Foo2 < BaseStuff
  FUU = "ok2"
end

a = Foo.new
puts a.to_s # => ok

puts Foo2.new.to_s # => ok2

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读