草庐IT

pthread_self

全部标签

ruby - "self.included(base)"在模块中是什么意思?

我经常看到这种模式:moduleArticle::Scoredefself.included(base)base.send:extend,ClassMethodsbase.send:include,InstanceMethodsendmoduleClassMethods...endmoduleInstanceMethods...endend然后在文章模型中,我看到了这个classArticleincludeArticle::Score...end所以我的猜测是“基础”可能指的是文章类,我们只是包括实例方法和扩展类方法。但是有人可以解释片段“self.included(base)”并概述

ruby - 为什么 Ruby 中的 `next` 方法会引发 SyntaxError 而 `next!` 或 `self.next` 不会在猴子修补 String 类时引发语法错误?

下面的代码工作正常:classStringdeffoonext!endendputs'hh'.foo#hi这个也很好用:classStringdeffooself.nextendendputs'hh'.foo#hi但这个不是:classStringdefbarnextendend#Invalidnext(SyntaxError)为什么Ruby在此处使用next关键字并引发SyntaxError,即使我正在处理String类? 最佳答案 对于前两个示例,Ruby解析器确定您正在调用方法,因为不能那样使用next关键字。对于第三个示例,

ruby - ruby 中的 "self.included?"

在下面的代码中,moduleTest@connection=nildefself.included?(base)@connection=baseenddefprintputs@connectionendendclassModuleTestincludeTestendm=ModuleTest.newm.print为什么打印时@connection为nil? 最佳答案 当您运行print时,它会打印ModuleTest实例的实例变量@connection。您的代码中还有另外两个地方引用了@connection,但它们指向ModuleTe

ruby - 在模块中使用 self

下面两个例子有区别吗?由于方法名称,是否有可能在第二个示例中出现方法冲突?模块中的方法不是自动“封装”在该模块中吗?示例1moduleImageUtilsdefself.preview(image)#dosomethingendend示例2moduleImageUtilsdefpreview(image)#dosomethingendend如果我将所有内容都放入模块ImageUtils中的类Foo中,这会有什么不同? 最佳答案 区别在于第一个例子定义了模块方法调用preview,第二个例子定义了mixin方法预览。因此,如果您将第一

ruby - 为什么 `yield self` 有帮助?

作为一个Ruby新手,我很困惑为什么在方法定义中yieldself是有益的。我在很多教程中都遇到过这个功能,认为它很有用——它对我来说很有意义如何它是如何工作的,但我不明白为什么你会用到它。假设我有以下代码:classDogattr_accessor:breeddefinitialize@breed="Westie"enddefbarkputs"Woof!"yieldselfifblock_given?endendfido=Dog.newfido.barkdo|d|puts"Bark,bark,bark!"putsd.breedend是的,通过yieldself,我现在可以访问我正在生

ruby-on-rails - rails : when to use self

我正在开发Rails应用程序,想了解何时使用self.for。这是我想完全理解的方法的代码。如果可能的话,我希望有一个替代这段代码的方法,这样事情就更清楚了。defself.for(facebook_id)User.create_by_facebook_id(facebook_id)end 最佳答案 self引用当前对象。在类中,self用于定义类级方法。classFoodefself.for(facebook_id)User.create_by_facebook_id(facebook_id)endend在类Foo中定义了一个类方

ruby - @ 在 self 方法中使用到底是做什么的?

我今天在一些代码中看到了这一点。classFoodefself.bar@myvar='x'endend这到底是在访问什么?据我所知,这是不可访问的表单实例方法。这叫什么(谷歌搜索),因为我似乎无法在其他任何地方找到这方面的例子。 最佳答案 @myvar语法将myvar标识为实例变量,因此真正的问题是:Whatisselfinsideaclassmethod?答案是“self是类对象”。所以,@myvar是Foo类对象的一个​​实例变量。如果添加另一个类方法:classFoodefself.pancakes_house@myvaren

ruby - 在 Ruby 中,如何在类中编写代码,使 getter foo 和 setter self.foo = ... 看起来更相似?

在Ruby中,在类的实例方法中,我们使用getterbyfoo我们使用setter方法self.foo=something一个不需要self.而另一个需要,有没有办法让它们看起来更相似,而不是使用像self.foo作为getter,因为它看起来也很冗长。(更新:注意getter和setter可能只是获取或设置一个实例变量,但它们也可能做很多工作,例如进入数据库并检查记录是否存在,如果不存在,则创建它,等等) 最佳答案 由于本地作用域优先,当你说foo=something时,将创建一个局部变量foo并分配something的内容.您可

ruby - 允许在类定义中执行 "class << self; def foo; end; end"的方法和运算符在哪里定义?

这怎么解释?我可以用其他对象替换self吗? 最佳答案 此语法在ruby​​中用于访问对象的元类或单例类。元类用于存储单个对象的方法。obj=#whatever...class这是该语言的核心部分,未在任何库中定义。 关于ruby-允许在类定义中执行"class https://stackoverflow.com/questions/678037/

ruby - 为什么 Ruby 不允许我在私有(private)方法中将 self 指定为接收者?

Ruby作为一种面向对象的语言。这意味着无论我发送什么消息,我都严格地在类的某个对象/实例上发送它。例子:classTestdeftest1puts"Iamintest1.Apublicmethod"self.test2enddeftest2puts"Iamintest2.ApublicMethod"endend有道理我在self对象上调用方法test2可是我做不到classTestdeftest1puts"Iamintest1.Apublicmethod"self.test2#Don'tworktest2#works.(whereistheobjectthatIamcallingth