ハッシュが nil または empty だったら、error を返す一行の書き方をすぐに思い出せなかった。
基本に立ち返るべくテスト。
1 # coding: utf-8
2
3 def aa(h)
4 p h
5 return puts "error\n" if h.nil? || h.empty?
6 return puts "ok\n"
7 end
8
9 h = Hash.new
10 aa(h)
11
12 h = nil
13 aa(h)
14
15 h = {:a=>'a'}
16 aa(h)
テストして気付いた。5行目のところをついつい
return puts "error\n" unless h.nil? || h.empty?
と、書いてしまってたことに。どおりで一瞬ぎょっとする結果になるわけだわ。
でもよくみていたら「あっ」と思った。
hash は、nil を返すのかempty を返すのかは、最初からはっきり決めておくべきなんであって
... if h.nil? || h.empty?
なんて書かなくてよいようにメソッドを作るべきなんだ。
つまり
return puts "error\n" unless h
か
return puts "error\n" if h.empty?
どちらかしかありえないようにすべきなんだろう、と。
empty の場合もあれば nil の場合もありうるなんてことは回避した方が安全でわかりいい。
...そういえば、以前にもこの結論に至ったことを思い出してしまった。がっくり。
0 件のコメント:
コメントを投稿