gotagota日記

「面白きことは良きことなり」

『たのしいruby 第4版』第18章 FileクラスとDirクラス

第18章 FileクラスとDirクラス

模範解答はこちら

(1)

問題

変数$:を使ってRubyが利用できるライブラリのファイル名を順に出力するメソッド print_libraries を定義しろ、という問題です。

私的解答
def print_libraries
  str = ''
  $:.each do |i|
    str << i + "\n"
  end
  return str
end
puts print_libraries

なんかしらを勘違いした結果、上記のような解答になりました(笑)
これだと、単純にディレクトリが出力されて終わりですね。
やり直そうにも模範解答が目に焼き付いてしまったので省略します。。。

(2)

問題

Unixの du コマンドのような挙動のメソッド du を定義しろ、という問題です。

私的解答

def du(path)
  byteSize = 0
  Dir.glob(path<<("**/*")) do |name|
    byteSize += File.size(name)
  end
  byteSize
end
puts du("./")

Dir#glob メソッドを用います。その際、**/*ワイルドカードを path にくっつけることで、指定ディレクトリ以下のすべてのファイル名を取得します。
そんで、File#size メソッドで容量を求め、どんどこ足しあわせていきます。