如果type
"foo"
,nil?
会被设置为nil?
吗?我不需要编写自己的type = "foo" if type.nil?
函数吗?
GetLastError()
答案 0 :(得分:2)
是的,如果你的应用程序中foo为null,则type将设置为“foo”。
您也可以使用以下功能来实现相同的功能。
type ||= "foo"
如果type = nil,则它将设置为“foo”,否则它将保留其值。
答案 1 :(得分:1)
.nil?
返回一个布尔值,因此您不需要制作该方法。
如果type
未定义或为零,则示例代码中的type
将== "foo"
答案 2 :(得分:1)
是的,type
将在您的代码的最初"foo"
时设置为nil
。此外,是的,您可以使用.nil?
来避免使用!type
。
但是我会这样写(假设在type
时也会分配false
):
type ||= "foo"
#=> "foo"
答案 3 :(得分:0)
我不需要编写自己的
nil?
函数吗?
没有。 nil?
在两个类中实现:
Object#nil?
返回false
NilClass#nil?
返回true
换句话说:只有nil.nil?
是true
,所有其他对象 1 都会回复false
。
type
如果[{1}}回复"foo"
,会true
设置为<{1}}吗?
是的,如果nil?
为"foo"
2 ,则type
已分配给type
。否则,nil
保持不变。
1 但有一个例外:BasicObject
的实例不响应type
,但您不太可能需要处理它们。
2 nil?
如果未定义,也将是type
。这是因为Ruby在调用nil
之前隐式创建了一个新的局部变量type
(值为nil
)。