9

我喜欢 Ruby 的一件事是你可以用尽可能短的方式表达事物。

我知道在分配时可以做到

x ||= a
# instead of
x = a unless x
# which is
x = x || a

有模拟形式return吗?

# instead of
return x if x

我只想“说”x一次。这个问题询问只是返回(什么都没有),但是当返回 void 以外的东西时,我不知道该怎么做。

4

2 回答 2

4

我几乎可以肯定,您的第二个示例不存在简写——也不能在不修改 Ruby 语法的情况下编写简写——因为它不是一个足够常见的习语。对不起,兄弟,但看起来你将不得不在这个问题上变得冗长。(虽然,真的,就冗长而言,这个并不是那么糟糕。)

(也请注意,第一个例子并不完全正确:x ||= a等价于x = x || a,也可以表示为x = a unless x。)

于 2012-05-29T18:02:46.210 回答
-1

如果它是块代码中的最后一条语句,则可以省略返回。

例子

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
于 2012-05-29T18:01:04.880 回答