在赋值结束时使用Ruby if子句

时间:2016-01-07 05:54:30

标签: ruby

如果type "foo"nil?会被设置为nil?吗?我不需要编写自己的type = "foo" if type.nil? 函数吗?

GetLastError()

4 个答案:

答案 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?在两个类中实现:

换句话说:只有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