Ruby中“return x if x”的简写

时间:2012-05-29 17:58:34

标签: ruby shorthand

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

我知道在分配

时可以做到
x ||= a
# instead of
x = a unless x
# which is
x = x || a

return是否有模拟表单?

# instead of
return x if x

我只想“说”x一次。 This question询问刚刚返回(没有),但是在返回void之外的其他内容时我看不到怎么做。

2 个答案:

答案 0 :(得分:4)

我只是确定你的第二个例子没有简写 - 也不能在不修改Ruby语法的情况下编写 - 因为它不是一个常见的习惯用法。对不起,兄弟,但看起来你将不得不在这个问题上冗长。 (虽然,实际上,就详细程度而言,这个并不是那么糟糕。)

(另请注意,第一个示例不太正确:x ||= a相当于x = x || a,也可以表示为x = a unless x。)

答案 1 :(得分:-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