Ruby中的nil高效开关盒?

时间:2011-08-01 05:03:05

标签: ruby-on-rails ruby ruby-on-rails-3

我有三个变量,所有变量都可以是nil:

to
cc
bcc

我如何将X分配给任何一个to / cc / bcc,因为其中任何一个都可以是nil(但不是全部三个)?做起来似乎很难看

if to.nil? and cc.nil?
   X = bcc
elsif ...

你做不到

 X = to or cc or bcc 

或者

2 个答案:

答案 0 :(得分:12)

哟可以这样做:

X = (to or cc or bcc)

或者这个:

X = to || cc || bcc

||的优先级高于=or - 更低,因此第一个示例在没有括号的情况下不起作用,X只是无条件地分配给第一个变量。

答案 1 :(得分:0)

我会做

x = [to, cc, bcc].find{|address| ! address.nil?}