Ruby中的条件赋值

时间:2016-09-14 19:17:36

标签: ruby

我正在开发一个项目,其中有几个我不熟悉的模式实例。我不知道该怎么称呼它所以我找不到任何文件。以下概念是什么?

if !@two = [nil, 2].sample
  puts 'there was an error'
else
  puts @two
end

由于

3 个答案:

答案 0 :(得分:2)

它基本上依赖于Ruby的 falsy 对象:nilfalse

除了nilfalse之外的所有内容在Ruby中都被称为 truthy

因此,在示例中,如果它是 truthy (2),则打印@two的值,否则(nil)打印错误消息。

我不认为这个“概念”有一个名字。

答案 1 :(得分:1)

这里没什么特别的,它相当于:

@two = [nil, 2].sample

if !@two
  puts 'there was an error'
else
  puts @two
end

@two = [nil, 2].sample会返回[nil, 2]中的随机元素,即nil2,并将其分配给实例变量@two

条件应该是不言自明的。

答案 2 :(得分:1)

在条件中使用赋值表达式的值的做法本身并没有 name ,但是在括号中包含赋值的做法称为{{3如果您正在编写这样的代码,那么您应该采用这种方法。