草庐IT

self-register

全部标签

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

ruby - 在没有 attr_accessible 的 Rails 4 中 self 记录 ActiveRecord 类文件

问题:在后attr_accessibleRails4世界中,您建议以何种方式(如果有的话)注释您的ActiveRecord模型类文件以传达其(数据库)属性?进一步思考作为Rails3->4升级的一部分,我们正在做一个切换,并且很高兴地从attr_accessible切换到Controller中的强参数。我理解并同意通过此开关提高安全性。如果您想了解更多,信息就在那里,而且不难找到。但是,在我的Rails3世界中,我喜欢在模型文件的顶部提醒我哪些属性构成了一个类。特别是当我们正在走向一个ActiveRecord类只是DAO的世界时,类除了数据库属性的集合之外还有什么?我不想为了记住它们而