本を読む

読書やコンピュータなどに関するメモ

Rubyで_if関数

 いまさらですが。

$ cat if.rb
#!/usr/bin/env ruby

def _if(c)
  e = ''
  if c
    yield
    def e.else; end
    def e.elsif c; self end
  else
    def e.else; yield end
    def e.elsif c, &b; _if c, &b end
  end
  e
end

x = ARGV[0].to_i

_if(x.zero?) {
  puts 'Zero!'
}.elsif(x == 1) {
  puts 'One!'
}.elsif(x == 2) {
  puts 'Two!'
}.else {
  puts "#{x}!"
}
$ ruby if.rb 0
Zero!
$ ruby if.rb 1
One!
$ ruby if.rb 2
Two!
$ ruby if.rb 3
3!

 以上、if相当を関数で定義しました。同様のことを考えた方も多いと思いますが、まぁ、ダジャレみたいなものです。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/998-0890ea39

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad