草庐IT

class_methods

全部标签

ruby - Class.superclass = 模块,Module.class = 类?

这是如何计算的?是圆形的更新:(在irb中)Class.superclass=ModuleModule.class=Class当Class是Modules的下类时,怎么可能说Module的类是Class?它是圆形的,先有鸡还是先有蛋。对象:同样的问题:对象是对象模型中的根对象。它的类怎么可能是Class,因为Class对象还不存在呢? 最佳答案 我们来看一下MRI源码的class.c文件:voidInit_class_hierarchy(void){id_attached=rb_intern("__attached__");rb_c

ruby - 为什么没有 Module.method_defined?(:method) work correctly?

我正在尝试使用Module.method_defined?(:method)检查模块中是否定义了方法,它返回false,应该返回true。moduleSomethingdefself.another1endendSomething.methods列出了“另一个”,但Something.method_defined?(:another)返回false。这可能不起作用,因为该方法是在self上定义的吗?如果是这种情况,除了使用method_defined?之外,还有其他方法可以检查模块上是否定义了方法吗? 最佳答案 要知道模块是否有模块

ruby-on-rails - Rails 上的 ruby : How to have multiple submit buttons going to different methods (maybe with with_action? )

这个问题在这里已经有了答案:HowdoIcreatemultiplesubmitbuttonsforthesameforminRails?(7个答案)关闭9年前。所以..'save'%>'library'%>然后在我的Controller中:with_actiondo|a|a.savedoenda.librarydoendend问题是只有一个操作被调用...两个submit_tags调用相同的操作...知道为什么吗?或者我如何获得两个按钮以将表单提交给两种不同的方法?

ruby - 为什么 `method=` 没有像其他任何方法一样对待?

考虑以下代码片段:classExampledefmy_attr=(value)@_my_attr=value@_my_attr*3endend我希望表达式Example.new.my_attr=5返回15,但事实证明这是错误的。始终返回原始返回值,即使我显式调用=方法也是如此:Example.new.my_attr=5#=>5Example.new.my_attr=(5)#=>5Ruby如何以及为何这样做?Ruby是否特别处理以=结尾的方法,还是采用其他机制?我想这排除了链接=方法的返回值,对吧?有没有办法让Ruby的行为有所不同,或者这就是它的样子?更新:感谢@jeffgran:Ex

ruby self.class.class_eval 或 singleton_class.class_eval

我这样做有什么区别classTdefinitializeself.class.class_evaldodeftestreturnself.class.object_idendendendend和classTdefinitializesingleton_class.class_evaldodeftestreturnself.class.object_idendendendend谢谢附言。塔斯回答说在这个例子中,singleton_class会为每一个新的对象返回不同的object_id,因为一个singleton_class只属于一个Object。但是IRB显示下一个1.9.2p180:

ruby - "class#method"在 ruby 中是什么意思?

这个问题在这里已经有了答案:关闭13年前。PossibleDuplicate:Whyaremethodsinrubydocumentationprecededbyapoundsign?EDIT:DuplicateofWhyaremethodsinrubydocumentationprecededbyapoundsign?你好,我正在尝试利用免费的ProgrammingRuby书在业余时间学习Ruby以获取乐趣。它大部分是相当直接的,但我一直看到像这样的符号KaraokeSong#to_s,这在本书的前几章中并没有真正解释。我知道它的意思是#但它是您可以在代码中使用的东西吗?或者只是ru

ruby - 对于未定义的实例变量,Ruby 是否有 method_missing 等价物?

当我调用一个不存在的方法时,method_missing会告诉我该方法的名称。当我尝试访问一个尚未设置的变量时,该值只是nil。我正在尝试动态拦截对nil实例变量的访问,并根据所访问的变量的名称返回一个值。最接近的等价物是PHP的__get.Ruby中是否有任何等效功能? 最佳答案 我不相信这在Ruby中是可能的。推荐的方法是在模板中使用“user”方法而不是“@user”实例变量。这与您在外部处理Ruby对象的方式一致(''obj.user''是一种引用''@user''的方法,但实际上不是''@user''本身)。如果您需要任何

ruby - 安装新 Ruby gem 时 RDoc::TopLevel:Class 的未定义方法 `reset'

例如,$geminstallnetaddrFetching:netaddr-1.5.1.gem(100%)Successfullyinstallednetaddr-1.5.1ERROR:Whileexecutinggem...(NoMethodError)undefinedmethod`reset'forRDoc::TopLevel:Class当我安装任何新的gem时,NoMethodError异常不断出现。我用谷歌搜索并搜索了RDoc和RubyGemsGitHub存储库中的问题,但一无所获。我的Ruby版本是$ruby-vruby2.3.0p0(2015-12-25revision5

ruby - rake 任务有 "method_missing"吗?

如果我的Rakefile没有找到具有特定名称的任务,我希望rake根据特定规则使用该名称创建一个新任务,如果一个文件缺少任务名称存在。但如果没有,我想回退到默认值(“不知道如何构建任务'foo'!”)。简而言之,Rake是否有method_missing? 最佳答案 我没试过,但快速搜索显示this.Ifyoudefinearulewithanemptystring,youcancatchanytaskthathasn’tbeendefinedelsewhere.Thismakesiteasytodynamicallycreater

ruby-on-rails - rails : dynamically define class method based on parent class name within module/concern

我想根据包含此Mixin的类名在Mixin中动态生成一个类方法。这是我当前的代码:moduleMyModuleextendActiveSupport::Concern#defsome_methods#...#endmoduleClassMethods#HereiswhereI'mstuck...define_method"#{self.name.downcase}_status"do#dosomething...endendendclassMyClass但这给了我以下方法名称:MyClass.mymodule::classmethods_status在方法定义中获取基类名称是可行的(s