前田です。 In message "[ruby-list:6851] again hd.rb" WATANABE Tetsuya <tetsu / jpn.hp.com> wrote: |課題としては、「bin_to_str」を汎用的にする(イニシャラ |イズの点など <- グローバル変数を使用している)というも |のがあるのですが... (再利用するかな?) グローバル変数はクラス変数の代わりとして使われている のでしょうか? Rubyだとクラス変数がないので、クラス定数にコンテナ (ArrayやHash)を代入して、クラス変数の代用にすることが 多いです。 # その前にbin_to_strはStringのメソッドにすべきか、という # 疑問があるのですが...。 | bin = $_.unpack('C*') | | bin.each_index { |i| | bin[i] = sprintf('%2.2x', bin[i]) | } これは bin = [] $_.each_byte { |c| bin.push(format("%2.2x", c)) } の方がよいかもしれません。 あるいは String.alias_method(:each, :each_byte) としておいて、 bin = $_.collect { |c| format("%2.2x", c) } という手もありますね。 | for i in bin.length .. 16 - 1 | bin.push(' ') | end (16 - bin.length).times { bin.push(' ') } や bin += [' '] * (16 - bin.length) と書けます。 | Kconv.kconv($1, Kconv::JIS, $in_kanji_code) これは |include Kconv としているなら kconv($1, Kconv::JIS, $in_kanji_code) とするだけでよいです。 あるいはKconv.kconv(...)という呼び方をするならincludeする 必要はないとも言えます。 あとデフォルトのコードは$KCODEの値を見るようにすると よいかもしれません。 1.1b8からはkconvに$KCODEをそのまま渡せます。 -- 前田 修吾