jjzjj

accessor

全部标签

ruby - 了解 attr_accessor 类方法的 self

classTestclassTestputsTest.get_some.inspect=>Testnil在上面我可以找到self作为Test本身,但不返回some_data作为输出。但是当我按照以下方式进行修改时,它会返回预期的输出classTestclassTestputsTest.get_some.inspect=>Testsome_data有什么区别?编辑现在在第一个示例中,如果我将getsome方法设置为Test.some='new_data'putsTest.some.inspect#=>new_dataTest.set_someputsTest.get_some.inspe

ruby-on-rails - 如何初始化 'attr_accessor'属性值?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:attr_accessordefaultvalues我正在使用RubyonRails3.0.9,我想初始化一些attr_accessor我的类\模型中继承自ActiveRecord::Base的属性值.也就是说,...在我的模块中我有:classUser和我想设置为true所有attr_accessor属性值。我该怎么做?P.S.:当然,我想通过“àlaRubyonRailsWay”解决上述问题。我知道after_initialize回调,但通过使用该方法,我应该重复每个attribute_name我想将其值设

ruby - 获取通过 `attr_accessor` 定义的所有变量而不覆盖 `attr_accessor`

我正在我的程序中设置一些跟踪代码,想知道哪些方法是通过attr_accessor定义的。使用TracePoint,我可以检测何时调用attr_accessor,但我不知道如何让它告诉我它收到的参数。有任何想法吗? 最佳答案 在问题标题中,您要求提供变量列表,但这回答了问题主体,它要求提供定义的方法列表。此方法不会检查实例变量,如果您开始手动更新或创建其他实例变量,则会引入噪音。moduleMethodTracerTracePoint.trace(:c_call)do|t|if(t.method_id==:attr_accessor)

ruby - 在 ruby​​ 中获取 attr_accessor/实例变量

所以我知道您可以通过调用#instance_variables获取Ruby中的所有实例变量,但如果它们尚未设置,则它们不会显示。示例classWalrusattr_accessor:flippers,:tusksendw=Walrus.neww.instance_variables#=>[]w.tusks#=>nilw.instance_variables#=>[:@tusks]我想立即访问attr_accessor定义的所有实例变量。w=Walrus.neww.instance_variables#=>[:@tusks,:@flippers] 最佳答案

ruby - 在 Ruby 的类中访问模块的类变量

我有一个包含类变量的模块moduleAbc@@variable="huhu"defself.get_variable@@variableendclassHellodefholaputsAbc.get_variableendendenda=Abc::Hello.newa.hola是否可以在Hello中获取@@variable而无需使用get_variable方法?我的意思是像Abc.variable这样的东西会很好。只是好奇。 最佳答案 您不能在模块的Hello类范围内直接访问@@variable(即Abc.variable)>Abc

ruby-on-rails - 为没有 `attr_accessor` 的 Rails 模型设置非数据库属性

在PHP中,我可以为模型设置一个属性(不是数据库中的列)。例如(PHP代码),$user=newUser;$user->flag=true;但在Rails中,当我设置数据库中不存在的任何属性时,它会抛出错误undefinedmethodflag。有attr_accessor方法,但是如果我需要大约十个临时属性会怎样? 最佳答案 butwhatwillhappenifIneedabouttentempattributes?#app/models/user.rbclassUserattr_accessor创建"virtual"attri

ruby - 使用 attr_accessor 动态创建类属性

在Ruby中,有没有办法动态地向类中添加实例变量?例如:classMyClassdefinitializecreate_attribute("name")enddefcreate_attribute(name)attr_accessorname.to_symendendo=MyClass.newo.name="Bob"o.name 最佳答案 一种方法(还有其他方法)是这样使用instance_variable_set和instance_variable_get:classTestdefcreate_method(name,&bloc

Ruby attr_accessor 与 getter/setter 基准测试 : why is accessor faster?

我刚刚针对等效的getter/setter方法测试了attr_accessor:classA#wedefinetwoR/Wattributeswithaccessorsattr_accessor:acc,:bcc#wedefinetwoattributeswithgetter/setter-functionsdefdirA=(d);@dirA=d;enddefdirA;@dirA;enddefdirB=(d);@dirB=d;enddefdirB;@dirB;endendvarA=A.newstartT=0dirT=0accT=0#nowwedo100timesthesamebench

ruby - 为什么 Ruby 中的符号不​​被认为是一种变量?

编程和Ruby的新手,我希望这个关于符号的问题符合要求。我知道Ruby中的符号(例如,:book、:price)作为散列键特别有用,并且可以全面地执行轻量级的特定子集字符串可以做到。但是,我在一方面对符号感到困惑。具体来说,当它们用于attr_accessor类型的方法时,它们的行为更像是一个变量。例如,attr_reader:book,:price。如果在该用法中它们是变量,这有点令人费解,因为它们通常不在变量类型中列出(如$global、@instance、local、@@class,有时还有CONSTANT,变量类型)描述变量类型时。如果以这种方式使用符号是变量,那么它们的作用域

ruby - 数组的 attr_accessor?

我想使用attr_accessor将数组作为实例变量。但是attr_accessor不只是用于字符串吗?如何在阵列上使用它?更新:例如。如果你想:object.array="cat"object.array="dog"ppobject.array=>["cat","dog"]那么你必须自己创建这些方法吗? 最佳答案 classSomeObjectattr_accessor:arraydefinitializeself.array=[]endendo=SomeObject.newo.array.push:ao.array.push:b