『たのしい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 メソッドで容量を求め、どんどこ足しあわせていきます。