我喜欢 Ruby 的一件事是你可以用尽可能短的方式表达事物。
我知道在分配时可以做到
x ||= a
# instead of
x = a unless x
# which is
x = x || a
有模拟形式return
吗?
# instead of
return x if x
我只想“说”x
一次。这个问题询问只是返回(什么都没有),但是当返回 void 以外的东西时,我不知道该怎么做。
我几乎可以肯定,您的第二个示例不存在简写——也不能在不修改 Ruby 语法的情况下编写简写——因为它不是一个足够常见的习语。对不起,兄弟,但看起来你将不得不在这个问题上变得冗长。(虽然,真的,就冗长而言,这个并不是那么糟糕。)
(也请注意,第一个例子并不完全正确:x ||= a
等价于x = x || a
,也可以表示为x = a unless x
。)
如果它是块代码中的最后一条语句,则可以省略返回。
例子
irb(main):002:0> def b(c)
irb(main):003:1> c if c
irb(main):004:1> end
=> nil
irb(main):005:0> b(4)
=> 4
irb(main):006:0> b(nil)
=> nil
irb(main):007:0> b(true)
=> true
irb(main):008:0> b(false) # TADA!!!
=> nil