草庐IT

不能识别

全部标签

ruby - 为什么我不能连接两个字符串并将它们分配给一个符号?

...如本例所示:helloworld.rb:1:syntaxerror,unexpected'=',expecting$end:helloworld="hello".concat("world")我想如果我使用concat,我会修改字符串“hello”并向其添加“world”,然后最终将生成的字符串-“helloworld”-分配给等号左侧的:helloworld符号符号。我认为那是合法的,就像我写的一样::helloworld="helloworld"哦,等等,那也行不通。(挠头)。 最佳答案 Ruby符号不能赋值,因为它们代表

ruby-on-rails - 为什么我不能用重载方法在 define_method 中调用 super?

当我运行下面的代码时会引发错误:implicitargumentpassingofsuperfrommethoddefinedbydefine_method()isnotsupported.Specifyallargumentsexplicitly.(RuntimeError).我不确定是什么问题。classResultdeftotal(*scores)percentage_calculation(*scores)endprivatedefpercentage_calculation(*scores)puts"Calculationfor#{scores.inspect}"scores

ruby - 为什么排序或宇宙飞船(飞碟)运算符 (<=>) 在 Ruby 中不能处理 bool 值?

在“Isitpossibletosortalistofobjectsdependingoniftheindividualobject'sresponsetoamethod?”中,我发现飞碟对bool值不起作用。考虑:ruby1.8.7:[true,false].sort#=>undefinedmethod`'fortrue:TrueClass(NoMethodError)truefalse#=>undefinedmethod`'fortrue:TrueClass(NoMethodError)ruby1.9.3:[true,false].sort#=>comparisonofTrueCl

ruby-on-rails - 不能在模型中包含模块

我正在使用Rubyversion1.8.7Railsversion3.0.3我的Rails应用程序的每个模型中都有一个名为alive的方法:defalivewhere('deleterisnull')end我不想在每个模型中都复制这段代码,所以我做了一个/lib/life_control.rbmoduleLifeControldefalivewhere('deleterisnull')enddefdeadwhere('deleterisnotnull')endend在我的模型(例如client.rb)中我写道:classClient在我的config/enviroment.rb中我写了

ruby - 为什么在 Ruby 的方法中不能有类?

我可以在函数体内创建Ruby类吗?我似乎收到错误消息,告诉我这是不允许的,但我认为这应该是因为这里的类太对象了。classAdefmethodclassBendendend这失败了,错误是“方法体内的类定义”。如果不能,为什么我们不能在方法内部创建类? 最佳答案 您可以创建类,但不能从方法内部分配常量。这个例子有效:classAdefab=Class.newdefb.xxx"XXX"endbendenda=A.new.apa##pa.xxx#"XXX" 关于ruby-为什么在Ruby的方

ruby - 为什么不能使用要处理的符号调用 protected 方法?

给定以下类:classFoodefadup.tap{|foo|foo.bar}enddefbdup.tap(&:bar)endprotecteddefbarputs'bar'endend看起来Foo#a和Foo#b应该是等价的,但它们不是:>Foo.new.abar=>#>Foo.new.bNoMethodError:protectedmethod`bar'calledfor#这是有原因的吗?这是错误吗?在Ruby2.2.3p173上测试 最佳答案 让我们首先注意,在Ruby中,您可能知道,在类Foo上声明的方法a中,我可以在任何对

ruby - 为什么我不能在初始化中使用 attr_accessor?

我正在尝试在initialize中执行一个instance_eval,然后执行一个attr_accessor,并且我一直得到这个:``initialize':未定义的方法“attr_accessor”。为什么这不起作用?代码看起来像这样:classMyClassdefinitialize(*args)instance_eval"attr_accessor:#{sym}"endend 最佳答案 不能在实例上调用attr_accessor,因为attr_accessor没有定义为MyClass的实例方法。它仅适用于模块和类。我怀疑您想在

ruby - 为什么我不能使用新的 Ruby 1.9.2 哈希语法将整数用作键?

Ruby1.9.2中新的哈希语法意味着我可以执行以下操作:my_hash={a:1,b:2,c:3}...相当于:my_hash={:a=>1,:b=>2,:c=>3}好的,所以使用旧语法可以做到这一点(第一个键是一个整数):my_hash={1=>1,:b=>2,:c=>3}而且我发现甚至可以像这样混合使用新旧语法:my_hash={1=>1,b:2,c:3}因此,如果我们援引“最小惊奇原则”,人们会期望以下内容是合法的:my_hash={1:1,b:2,c:3}...但事实并非如此。它会产生一个语法错误:SyntaxError:(irb):40:syntaxerror,unexpe

ruby - 如何让 rbenv 识别 '1.9.3-p***' Ruby 版本?

我正在尝试运行一些Ruby项目,并且该项目正在使用.ruby-version文件。该文件仅包含:1.9.3我安装了最新的Ruby1.9.3:$rbenvinstall1.9.3-p448然而,当我运行ruby--version时,我得到了rbenv:version'1.9.3'isnotinstalled为了修复这个错误,我列出了~/.rbenv/versions/并且它包含文件夹1.9.3-p448。我将该文件夹重命名为1.9.3并运行rbenvrehash。这解决了问题。看起来-p448部分(什么意思?补丁?)混淆了rbenv。如何在不手动重命名~/.rbenv中的文件夹的情况下使

ruby-on-rails - 如何使用符号来识别 ruby​​ 方法中的参数

我正在学习Rails并回到Ruby以了解Rails中的方法(以及Ruby的实际工作原理)。当我看到如下方法调用时:validates:first_name,:presence=>true我很困惑。您如何在ruby​​中编写接受符号或散列的方法。validates方法的源代码也很困惑。有人可以为我简化在ruby​​类和实例方法中使用符号作为参数的主题吗?更新:好一个@Dave!但我尝试的是这样的:deffull_name(:first_name,:last_name)@first_name=:first_name@last_name=:last_namep"#{@first_name}#