Ruby rescue语句修饰符是否与require一起工作?
irb(main):001:0> require 'a' rescue nil
LoadError: no such file to load -- a
from (irb):1:in `require'
from (irb):1
from :0
目标
我想知道C++中是否有'null‘,就像Python中的None或者Ruby中的nil一样。我也想知道你应该如何使用它。
码
这是我做的C++代码。
#include <iostream>
int main()
{
bool value = _____; // Are you supposed to use 'null' with a 'bool' type?
std::cout << value;
}
调度器
我试着用null、nil、Null和Nil替换null、nil、Null和Nil,但它们都没有
token = params[:token]
email = params[:email]
phone_number = params[:phone_number]
iso_code = params[:iso_code]
if token.nil? or email.nil? or phone_number.nil? or iso_code.nil?
raise InvalidParameterException
end
token.strip!
email.strip!
phone_number.strip!
iso_code.strip!
#use the variables
我正在使用Paperclip,下面是我在模型中删除附件的操作:
def before_save
self.avatar = nil if @delete_avatar == 1.to_s
end
除非在用户实际上传图像时设置了@delete_avatar标志,否则效果很好(因此模型会同时接收params[:user][:avatar]和params[:user][:delete_avatar]。这将导致以下错误:
TypeError: can't convert nil into String
from /Work/project/src/vendor/plu
下面是我演示懒惰评估概念的简单程序。
class A
def x
y += 1
end
def y
@y ||= 0
end
end
A.new.x
但是我在运行这个程序时得到了这个结果
NoMethodError:用于nil:NilClass的未定义方法`+‘
我做错了什么吗?
当@y是一个数组时,它的工作原理是完美的。
class A
def x
y << rand(10)
end
def y
@y ||= []
end
end
a = A.new
a.x
更新
我终于明白了问题所在。Ruby是按
我一直都在看书中的代码示例,但最近被我代码中的一个bug难住了。
在添加这行代码之后(在完整文件中的第60行,如下所示) --
@index.add_to_index(song, song.name, song.artist)
我收到这个错误:
Loaded suite ruby_juke
Started
E
Finished in 0.000213 seconds.
1) Error:
test_delete(TestSongList):
NoMethodError: undefined method `name' for #<Song:0x10cd95eb0>
我正在尝试让will_paginate与Sinatra一起工作,但我在使用will_paginate和DataMapper时遇到了一个奇怪的问题。所以我有一个代码:
require 'data_mapper'
require 'will_paginate'
require 'will_paginate/data_mapper'
class User
include DataMapper::Resource
property :id, Serial # primary serial key
property :usernam
我对这个限制有问题!我不能比较两个日期,控制台给我这个错误:
undefined method `<' for nil:NilClass
这是我到目前为止写的代码。
# app/models/reservation.rb
class CountValidator < ActiveModel::Validator
def validate(record)
if (record.second || record.first)
record.errors[:base]<< ' error '
end
end
e
看到.nil?是如此有用,并使代码如此可读性,我尝试了.false?,并感到惊讶,它不存在。
问题
在不使用任何用户定义的方法的情况下,什么是最优雅的/首选的/自文档化/惯用的方法来检查在ruby中某些东西是否是假的?
示例
一个可能的用例替换;此中的s.false?:
def false?
self == false
end
s ||= "hello" # is the same as
s = "hello" if (s.nil? || s.false?)
操作系统: Debian GNU/Linux 8
Ruby版本: 2.4.1
Rails版本: 5.1.4
我只是使用rails new创建了一个全新的Rails项目。在它的目录中,使用irb,我尝试为一个不存在的可执行文件执行一个shell命令,然后抛出一个异常:
irb(main):001:0> `foobar`
Errno::ENOENT: No such file or directory - foobar
from (irb):1:in ``'
from (irb):1
from /home/jackson/.rbenv/ve
我正在用Ruby编写二叉树类中的递归toString方法。该算法使用两种方法,如下所示。我有一个名为结果的局部变量,它保存树中所有值的连接。由于一些奇怪的原因,当我连接toString算法时,树的根会发生变化。
def toString
currentNode = @root
result = "<"
if nil != currentNode
result << (getString currentNode, result)
end
result = result + ">"
return resul
我正在编写一个gem,其中我希望在C扩展中实现一个条件赋值。
其思想是为提供赋值。这只在变量为nil时才会赋值。例如..。
var = false
var //= 42 # var is false
var = nil
var //= 23 # var is 23
我在ruby/ruby存储库中找到了的定义
There are also ||= and &&=. The former makes an assignment if
the value was nil or false while the latter makes an assignment
if the
我想要的是:
obj = Foo.new(0) # => nil or false
这不起作用:
class Foo
def initialize(val)
return nil if val == 0
end
end
我知道在C/C++/Java/C#中,我们不能在构造函数中返回值。
但我想知道这在Ruby中是否可行。
我正在编写如下代码:
[1,2,3,4,5].inject([]) do |res, a|
res << a*a and next if a == 2
res << a
end
它会产生以下错误:
NoMethodError: undefined method `<<' for nil:NilClass
接下来,它将res变量设置为nil,如何解决这个问题?
我尝试过各种方法,但无法与ruby一起工作,我知道我提供的这个片段可以不使用next(a == 4 ? res << a*a : res << a)完成,但是在我
我写了以下Ruby代码:
def myItems
if @item1
yield @item1
end
if @item2
yield @item2
end
end
现在我尝试使用:
myItems.each do |item|
puts item
end
但是,当@item1和@item2都为nil时,我得到错误:
Error: #<NoMethodError: undefined method `each' for nil:NilClass>.
我希望C#中的“break”等价物可以防止这种情况发生
目前,我正试图解析大型xml文件,下面是我的xml文件的样子:
<post>
<row Id="22" PostTypeId="2" ParentId="9" CreationDate="2008-08-01T12:07:19.500" Score="7" Body="<p>The best way that I know of because of leap years and everything is:</p>&#x
当运行gem install RedCloth (在Windows XP上)时,我得到:
Fetching: RedCloth-4.2.8.gem (100%)
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
Successfully installed RedCloth-4.2.8
1 gem installed
Installing ri documentation for RedCloth-4.2.8...
Installing
p b #undefined local variable or method b for main:Object
a = nil
if a and (b=3)
do_something_with b
end
p b # nil
为什么b在if代码块执行后得到值nil,而预期的结果应该是undefined local variable or method b for main:Object,是不是预先将内存中的所有变量初始化为nil?
使用以下代码的情况相同
if nil
bb = 10
end
p bb # nil
有没有人可以解释一下ruby是如何初始化变量的,以及这种情况下发生了
我创建了一个Spam类型的新对象,使用attr_accessor来同时使用hooray和name,并且我有initialize方法。我希望当我创建一个新对象时,该对象会加载一个名称为"Whammy“的变量和一个名为hooray的空数组。虽然我不能理解这种行为。有没有人能解释一下,先谢谢你。
module Test
class Spam
attr_accessor :hooray, :name
def initialize
hooray = []
name = "Whammy"
end
end
end
Loading development e