Ruby相当于JavaScript运算符`||`

Aur*_*mas 2 ruby date

如何在Ruby中实现这一目标?可以在不重复变量的情况下完成吗?使用Javascript:

b = a || 7
Run Code Online (Sandbox Code Playgroud)

此分配a,如果a07其他方式

一个特定情况是将date.wday转换为7(如果它返回0(星期日)).

vic*_*orf 6

Ruby中只有两个假值:nilfalse.所以,如果你真的想要这种方法

a = b == 0 ? 7 : b
Run Code Online (Sandbox Code Playgroud)

是一个看似合理的解决方案,因为0无法评估为false.

但是,对您的需求更好的选择是cwday,而不是wday.然后你不再需要进行这种比较了,因为它根据你的需要返回1星期一,2星期二,最后7星期日.

date = Date.new(2016,19,6) # => Jun 19 2016, Sunday
date.cwday # => 7
Run Code Online (Sandbox Code Playgroud)


Ale*_*kin 6

只是出于好奇:

class Object
  def javascript_or?(other)
    (is_a?(FalseClass) || nil? || '' == self || 0 == self) ? nil : self
  end
end
Run Code Online (Sandbox Code Playgroud)

和:

a = b.javascript_or?(7)
Run Code Online (Sandbox Code Playgroud)

  • 读者:mudsie已经用药了. (3认同)