2014-04-03から1日間の記事一覧
ディレクトリを作成するならDir.mkdirを使う。引数には作成するディレクトリと、モードを指定する。 Dir.mkdir('foo', 0755) filetutilsライブラリのFileUtils.mkdir_pを使えば深い階層のディレクトリや、複数のディレクトリをまとめて作成することができる…
openのフラグにwまたはaを指定してファイルをオープンすれば新しいファイルを作成することができる。 open('foo.txt', 'w'){|f| f.puts 'hoge' } 新しい空のファイルを作成したいのであれば、fileutilsライブラリのFileUtils.touchも利用できる。 require 'f…
Rubyでは複数のクラスを継承すること(多重継承)はできない。しかし複数のモジュールをインクルード(Mix-in)することはできる。RubyにおいてはMix-inこそ他の言語の多重継承に対応する機能である。以下に例を示す。 module A def a; end end module B def b; …
配列にある要素が含まれているかを判定するにはArray#include?を使う。このメソッドは引数で与えた要素と==で等しい要素が存在する場合にtrueを返し、存在しない場合はfalseを返す。 p [1, 2, 3].include?(2) #=> true p [1, 2, 3].include?(4) #=> false 何…
Time#strftimeは時刻を指定したフォーマットで文字列に変換するメソッドである。フォーマットの文字列として以下が利用できる。 文字 意味 %A 曜日の名称(Sunday, Monday ... ) %a 曜日の省略名(Sun, Mon ... ) %B 月の名称(January, February ... ) %b 月の…
オブジェクトを複製するにはObject#dupかObject#cloneを使う。Object#cloneはオブジェクトの内容だけでなく特異メソッドなどもコピーする。一般的にはObject#dupで十分だ。以下は文字列を複製する例である。 str = "sample string" def str.singleton_method…
メソッドを再定義するときaliasで元のメソッドを残しておくあるクラスを継承して既存のメソッドを再定義する場合、元のメソッドにaliasを付けておくと、再定義するメソッドの中で元のメソッドを呼ぶことができる。元のメソッドの機能を活かしつつ、何か機能…
文字列中のタブとスペースを変換するには、String#gsubによる置換を使って以下のようにする。以下はタブをスペース4つと変換する例である。 p 'hoge\tpiyo\t\tfuga'.gsub('\t', ' ' * 4) #=> "hoge piyo fuga" p 'hoge piyo fuga'.gsub(' ' * 4, '\t') #=> "…
最大公約数はInteger#gcdで、最小公倍数はInteger#lcmで求めることができる。またInteger#gcdlcmは最大公約数と最小公倍数を同時に求めて配列で返す。 p 624.gcd(735) #=> 3 p 624.lcm(735) #=> 152880 p 624.gcdlcm(735) #=> [3, 152880] なおRuby 1.8では…
文字列を数値に変換する 2進数などで書かれた文字列を数値に変換するにはKernel.#IntegerまたはString#to_iを使う。String#to_iは基数が指定できるため、文字列に0xなどの接頭子が無くても数値に変換することができる。 p Integer("0b11111111") #=> 255 p I…