Rubyっぽいコードを書く

#hogeがnilじゃなかったらfugaに代入する

#rubyはじめて30分位の人が書きそうなコード
if hoge != nil
fuga = hoge
end

#nil?くらいは使いたい
if !hoge.nil?
fuga = hoge
end

#!(否定)を使わない
unless hoge.nil?
fuga = hoge
end

#nilはfalseである
if hoge
fuga = hoge
end

#1行で書けるときは1行で
fuga = hoge if hoge
#hogeがnilじゃなかったらfugaに代入する、nilの場合はdefalutを代入する
fuga = []
if hoge
  fuga = hoge
else
  fuga = default_array#default的な何か
end

#ifはブロックを作らない
if hoge
  fuga = hoge
else
  fuga = default_array
end

fuga.each{...} #これはぬるぽにならない

#評価式をうまく
fuga = hoge || default_array
          • -

まったく関係ないけど、injectってresultをちゃんと返してやらないと駄目なんだね><
resultはなぜか知らないけどもっと広いスコープなのかと思ってました。

つまりこんなコードを書いて頭をうならせていたぼくはunkってことです

a = [1,2,3,4,5]
a.inject(0){|result, i| result += i if i>3 } #nilが+できないうぇうぇと言われる

a.inject(0) do |result, i|
  result += i if i>3
  result #resultを毎回返してやればok
end