草庐IT

get-method

全部标签

Ruby 增量 (+=) 引发错误 undefined method '+' for nil :NilClass

以下代码导致了我的问题:classFoodefinitialize(n=0)@n=nendattr_accessor:ndefincn+=1endend调用Foo.new.inc引发NoMethodError:undefinedmethod'+'fornil:NilClass调用Foo.new.n返回0为什么Foo.new.inc会引发错误?我可以毫无问题地执行Foo.new.n+=1。 最佳答案 tldr;某种形式的self.n=x必须始终用于分配给setter。考虑n+=x扩展为n=n+x其中n被绑定(bind)为局部变量因为它

ruby - Aptana 3 ruby​​ 调试器 - DebugThread 循环中的异常 : undefined method `is_binary_data?'

我正在尝试在Aptana3中调试简单的ruby​​文件。classHelloWorlddefinitialize()enddefgreet()puts"helloworld"endendh=HelloWorld.newh.greet断点设置为h.greet在我开始调试后,调试器启动,但是当它尝试初始化ruby​​类时,调试器断开连接并显示消息FastDebugger(ruby-debug-ide0.4.9)listenson:54749ExceptioninDebugThreadloop:undefinedmethod`is_binary_data?'for"#":String当我将断

ruby - 导轨 3 : method delegations with nil relationships

给定以下(大大简化的)对象:classPlayer:player,:prefix=>:playerend我需要在多个View中显示玩家名称。但是Player可能为nil是完全有效的(并且是预期的)。我目前通过以下方法处理此问题:classCharacter我不喜欢这个有几个原因。有更好的方法吗? 最佳答案 如果您主要处理与View相关的代码,您可能会发现在delegate调用中将“or”与allow_nil:true结合使用感觉很自然:Name:您可能会考虑的另一个有趣的模式是nullobjectpattern;使用此模式,您可以使

ruby-on-rails - rails 错误 method_missing':Gem::Specification 的未定义方法 `this'

我遵循这个教程:https://guides.spreecommerce.com/developer/getting_started_tutorial.html#installing-image-magick当我写作时jonstark@jonstark-pc:~/rails_projects/optima1$spreeinstall--auto-accept我明白了:/home/jonstark/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb:2158:in`method_missing':undefine

ruby - RubyMine 中的 "Get Available Generators List"警告。我该如何摆脱这个?

我正在使用RubyMine5.4.1并使用ruby​​1.9.3-p0创建一个新的rails3.2.9应用程序,并收到以下警告。我相信bundler当时正在运行install。警告标题为“GetAvailableGeneratorsList”,并发出以下警告,第一个是“Getavailablegeneratorsscriptexecuteswitherrors”:这是在告诉我我必须提供一个“secret”来让future版本的rake正常运行,还是在告诉我提供“secret”只是一个临时修复,但不适用于rake的future版本?如何永久修复此警告,以便我可以接受rake,并处理漏洞?

ruby - 在 define_method 中调用 super 时没有父类(super class)方法

当我重写一个已经存在的方法时,为什么会出现以下错误talk:super:nosuperclassmethodtalk(NoMethodError)?如何修复此代码以调用super方法?这是我正在使用的示例代码classFoodeftalk(who,what,where)p"#{who}is#{what}at#{where}"endendFoo.new.talk("monster","jumping","home")classFoodefine_method(:talk)do|*params|super(*params)endendFoo.new.talk("monster","jump

ruby - Redmine邮箱配置: "undefined method ` email_delivery =' for ActionMailer::Base:Class"

我在第一次安装Redmine后为Redmine配置电子邮件通知。我创建了/etc/redmine/default/email.yml并添加了:#Outgoingemailsettingsproduction:email_delivery:delivery_method::smtpsmtp_settings:address:smtp.example.comport:25domain:example.comauthentication::loginuser_name:examplepassword:example访问时http://redmine/我遇到一个应用程序异常:“ActionMa

ruby - end.method 在 Ruby 中有什么作用?

我见过这样的代码:defsome_method#...end.another_methodend.another_method部分的作用是什么? 最佳答案 我相信你的例子是错误的,因为你在这里做的是定义一个方法并根据方法定义的结果调用一个方法(而不是方法调用),它总是(通常?)nil。fmendez指的是一种类似的形式,但end是block的结尾,在这种情况下不是方法定义。所以,例如:array.mapdo|element|element*elementend.sum假设会返回给定数组元素的平方和。但是,如果您像这样进行方法链接,则

ruby-on-rails - PHP 魔术方法 __call、__get 和 __set 的 Ruby 等价物

我很确定Ruby有这些(等同于__call、__get和__set),否则find_by将如何在Rails中工作?也许有人可以举一个简单的例子来说明如何定义与find_by相同的方法?谢谢 最佳答案 简而言之你可以映射__调用带有参数的method_missing调用__设置为方法名称以'='结尾的method_missing调用__获取不带任何参数的method_missing调用__调用PHPclassMethodTest{publicfunction__call($name,$arguments){echo"Callingob

Ruby:STDIN.gets() 和 gets.chomp() 有什么区别?

Ruby中的STDIN.gets()和gets.chomp()有什么区别?他们不是都从用户那里检索原始输入吗?附带问题:如果我想将他们的输入转换为整数,我该怎么做myNumb=Integer(STDIN.gets())和myNumb=Integer(gets.chomp()) 最佳答案 gets实际上是Kernel#gets.它从作为参数传递的文件中读取,或者如果没有参数,则从标准输入中读取。如果你只想从标准输入读取,那么你应该更明确一点。STDIN.gets$stdin.gets关于转换,我一般用String#to_i.它可以很好