動的型付け

Rubyは動的に型付けを行うので、こんな書き方ができる。

#関数 fooの定義。barの型は気にしない
def foo(bar)
  print bar
  print "\n"
end

foo(1)
foo([1,2,3])
foo({'baz'=>'Baz', 'quux'=>'Quux'})

実行結果

1
123
quuxQuuxbazBaz

print自体がポリモーフィックなのであんまり意味ないか。

でも、Hashはいまいち期待と違う出力。
以下のようにすれば引数の型によって処理を分けることもできる。

def foo(bar)
  if bar.is_a?Hash
    print bar['baz'].to_s + " " + bar['quux'].to_s
  end
end

上の関数に追加すれば、Hash部分の実行結果は

Baz Quux

上記をJavaで書くと、、、面倒くさいので省略。