草庐IT

c_attr_accessor

全部标签

ruby - attr_accessor 创建的方法对子类不可用

http://gist.github.com/172341(stackoverflow破坏了格式)在以下情况下,Human创建的方法名称对Boy不可用。我的理解是否正确,attr_accessor方法不是可用于子类。我需要使用父类(superclass)来访问attr_accessor添加的方法。 最佳答案 您正在寻找的是cattr_accessor,它可以解决这个特定问题:http://apidock.com/rails/Class/cattr_accessor这是您的示例,已修复:classHumandefself.age@ag

ruby-on-rails - 为什么使用 cattr_accessor(JRuby、Rails)重新初始化我的类变量

好吧,我知道这有点怪诞,但我正在运行JRubyonRails,而且我对两者都比较陌生。我看到一些我无法理解的行为,我想知道是我做错了什么还是我的堆栈有问题。基本问题是我的类属性似乎正在重新初始化,这是我不希望发生的事情。这基本上是我的代码classMyController问题在于每次调用init_an_attr时,if条件的计算结果为真,我最终重新分配@@an_attr。这是预期的行为吗?如果可以,您能解释一下原因吗,因为对我来说,作业应该只发生一次。 最佳答案 在Rails中,当以开发模式运行时,类不会被缓存。MyControll

ruby - ruby attr_accessor 的奇怪行为

我有这段代码:classCallMeattr_accessor:a,:b,:cdefself.start(*args)self.new(*args).get_answerenddefinitialize(a,b,c)@a=a@b=b@c=cenddefget_answerifcb=nilelsereturnbendendendanswer=CallMe.start(1,2,nil)为什么当我在irb中运行它时,我总是得到answer=nil即使逻辑情况是得到b值为2 最佳答案 VariableHoisting效果在许多语言中使用。对

ruby-on-rails - 访问使用 attr_accessor 创建的变量

我想了解attr_accessor给我的访问权限。据我了解,它提供了getter和setter方法。所以attr_accessor:color它将为我创建如下内容defcolor@colorenddefcolor=(value)@color=valueend我不明白的是为什么在下面的代码中,为什么我不能在初始化程序中使用color=?(它最终是空白的)。为什么我需要使用@color=或self.color=来代替?color=不应该是一种调用上面刚刚为我创建的setter方法的方法吗?classBirdattr_accessor:colordefinitialize(c="green"

使用 attr_accessor 和初始化方法的 Ruby 类

致力于用Ruby制作一个小的命令行脚本,其中用户提供一些与餐厅相关的信息,以及返回计算的信息。目前我有以下代码:classRestaurantattr_accessor:name:type:avg_pricedefinitialize(name,type,avg_price)@name=name@type=type@avg_price=priceendend问题一如果我们使用attr_accessors声明方法type,和price,和name为什么Initialize方法是必要的?这是因为我们需要设置给它输入值?问题2有一个子类叫做RestaurantList其次是在代码中。这是什么

ruby - 将 attribute_accessor 添加到 Ruby 中的单个实例

我有以下代码将实例变量添加到单个实例:classMyClassdefinitialize(x)@var=xendendobj=MyClass.new(4)obj.instance_variable_set(:@a,5)我可以为属性动态添加attr_accessor以便我可以使用obj.a和obj.a=...还是我必须使用instance_variable_get和instance_variable_set来获取和设置它吗? 最佳答案 您可以将attr_accessor发送到对象的单例类:obj=MyClass.new(4)obj.s

ruby - 冰糕要求 `sig` `attr_reader`

Sorbet显示attr_reader错误,但如果我错了请纠正我,当函数被声明而不是被调用时需要sigs,对吧?我已经尝试过阅读文档,但我得到的只是这个注释注意:许多看起来像局部变量的Ruby构造实际上是没有括号的方法调用!具体来说,注意attr_reader和零参数方法定义。app/util/hodor.rb:125:Thisfunctiondoesnothavea`sig`https://sorbet.org/docs/error-reference#7017125|attr_reader(:collection_name)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

python - Python 中的 attr_reader

attr_reader在python中是否有一个“同义词”,就像不需要让我输入的东西一样?:classFoo():def__init__(self,foo,bar,spam,spammity,spam,spam,quux,foobar,barfoo):self.foo=fooself.bar=barself.spam=spam#Andsoon...只需一行代码就可以生成self.foo=foo,etc.,有点像ruby​​的attr_reader会生成@foo=foo 最佳答案 要设置所有内容,请尝试:classFoo():def_

ruby - `attr_accessor`/`attr_reader` 创建实例变量是什么意思?

attr_accessor的文档明确地说它创建了一个实例变量:[...]creatinganinstancevariable(@name)andacorrespondingaccessmethod[...]attr_reader的文档也是如此:Createsinstancevariablesandcorrespondingmethods[...]我理解第二部分,即attr_accessor和attr_reader创建方法,但我不明白第一部分。他们“创建实例变量”是什么意思? 最佳答案 这是文档中的错误/误导性措辞。attr_read

ruby-on-rails - 如何一次为所有类变量制作 'attr_reader' 或 'attr_writer'?

我正在使用RubyonRails3,因为我声明了一个包含很多变量的类,所以我会为这些类变量一次性声明所有“attr_reader”或“attr_writer”.我试过了classPersoneattr_reader:alldefinitialize(name,surname,...)@name=name@surname=surname...#Alotofvariables!endend但这不起作用。 最佳答案 classPersoneINSTANCE_VARS=[:name,:surname]attr_reader*INSTANCE