Ruby Tips!

RubyのTipsを紹介します

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における多重継承について

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 何…

strftimeメソッドで時刻を文字列に整形する

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で元のメソッドを残しておくあるクラスを継承して既存のメソッドを再定義する場合、元のメソッドに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進、8進、10進、16進数を相互に変換する

文字列を数値に変換する 2進数などで書かれた文字列を数値に変換するにはKernel.#IntegerまたはString#to_iを使う。String#to_iは基数が指定できるため、文字列に0xなどの接頭子が無くても数値に変換することができる。 p Integer("0b11111111") #=> 255 p I…