我喜欢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之外的其他内容时我看不到怎么做。
答案 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