引数に専用クラスを作る話をしましたがやっぱ(ry
以前、専用クラスを作ることで
引数の順番を気にしなくて良いまま、タイプ量は少なく
見た目もわかりやすくしてみる話をしたのでした。
http://d.hatena.ne.jp/takkaw/20080614/p1
以下の話は上のURLを読んでから見てください。
その後、色々考えていたらわざわざ専用クラスを作るような
小難しいことは考えずにハッシュを作るようにして
それを渡せば良いじゃん。って事に気づきました。
いやぁ、ごめんごめん。
# 仕込み class Numeric def hz ; { :freq => self } ; end def khz ; { :freq => self * 1000 }; end def bit ; { :bit => self } ; end def channel ; { :channel => self } ; end def ch ; { :channel => self } ; end end # 実際のWavクラス class wav def initialize( *args ) args.each { |arg| case arg.shift.first when :channel ; @channels = arg.last.to_i when :freq ; @sample_rate = arg.last.to_i when :bit ; @sample_bit = arg.last.to_i end } end end
Wav.new 1.channel, 44100.hz, 16.bit Wav.new 44100.hz,16.bit, 1.channel
追記:
id:isaisstillalive さんに
Hashじゃなくてインスタンス変数名を入れたArrayの方が良いんじゃないかっていう
トラックバック頂きました。ありがとうございます。
なるほどー、たしかに良いですね。
特に実装側がinstance_variable_set だけで良いし。
http://d.hatena.ne.jp/isaisstillalive/20080725/1216984360
一方、ハッシュにしておくと、従来の通りのハッシュによる指定もできるしなー
どちらか、お好みでっていうことになるのかな。