9

私がRubyで気に入っていることの1つは、可能な限り短い方法で物事を表現できることです。

割り当てるときにできることを知っています

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

2番目の例の省略形は存在しないと確信しています。また、Ruby構文を変更せずに記述することもできません。これは、十分に一般的なイディオムではないためです。申し訳ありませんが、これについては冗長にする必要があるようです。(ただし、実際には、冗長性に関する限り、これはそれほど悪くはありません。)

(また、最初の例は完全に正しくないことに注意してください。は、x ||= aと同等x = x || aであり、として表すこともできますx = a unless x。)

于 2012-05-29T18:02:46.210 に答える
-1

ブロックコードの最後のステートメントである場合は、returnを省略できます。

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 に答える