Ruby Tips!

RubyのTipsを紹介します

2014-03-24から1日間の記事一覧

文字列を分割して繰り返す

String#each、String#each_line、String#linesは文字列の分割して繰り返しを行うメソッドだ。これらのメソッドは、引数で区切り文字を指定することで動作を変えることができる。引数を与えない場合、これらのメソッドは組み込み変数$/の値で文字列を分割する…

Rubyの例外処理

Rubyの例外処理はbegin-rescueで行う。 begin # 処理1 rescue # 処理2 else # 処理3 ensure # 処理4 end begin節の処理1で例外が発生すると、rescue節の処理2が実行される。 begin節の処理1で例外が発生しなければ、else節の処理3が実行される。 例外が発生…

配列に要素を追加する

配列の先頭に要素を追加するには、Array#unshiftまたは、Array#[]=を使って以下のようにする。 a = [] a.unshift(1) a[0, 0] = 2 p a #=> [2, 1] 配列の末尾に要素を追加するには、Array#pushまたは、Array#を使って以下のようにする。 a = [] a.push(1) a <…

大文字と小文字を変換する

文字列のすべてのアルファベットを小文字にするにはString#downcaseを使う。 p "AbCdEf".downcase #=> "abcdef" 逆に文字列のすべてのアルファベットを大文字にするにはString#upcaseを使う。 p "AbCdEf".upcase #=> "ABCDEF" 大文字は小文字に、小文字は大…

ホスト名からIPアドレスを得る / IPアドレスからホスト名を得る

ホスト名からIPアドレスを得るには、Socket.getaddrinfoを使う。 第1引数にはホスト名、第2引数にはサービス名を与える。 返却値はアドレス情報の配列であり、3番目の要素にIPアドレスが格納されている。逆に、IPアドレスからホスト名を得るには、Socket.get…

Fileのクラスメソッドでファイルを調査する

Fileにはファイルの調査に使える以下のクラスメソッドが用意されている。 クラスメソッド 意味 exist? ファイルが存在するか size? ファイルが存在して、かつ空でないか zero? ファイルが存在して、かつ空か file? ファイルか directory? ディレクトリか sym…

配列の差を取る

配列の差を取るにはArray#-を使って以下のようにする。 これで左辺の配列から右辺の配列にある要素がすべて取り除かれる。 a1 = ["apple", "orange", "mango"] a2 = ["orange"] p a1 - a2 #=> ["apple", "mango"] なお重複した要素があった場合はすべての要…

配列を初期化する

配列はArray.newの引数やブロックによって初期化することができる。以下は要素数3の配列を生成する例である。デフォルトの初期値はnilである。 p Array.new(3) #=> [nil, nil, nil] 第2引数で初期値を指定できる。以下は配列のすべての要素をtrueとする例で…

スクリプトの処理時間を計測する

Process.timesでプロセス開始時から使用したCPU時間が取得できる。 Process.timesが返すStruct::Tmsオブジェクトの内容は以下の通り。 属性 意味 utime ユーザーCPU時間 stime システムCPU時間 cutime 終了した子プロセスのユーザCPU時間の合計 cstime 終了…

モジュールを定義する

Rubyでモジュールを定義するには以下のようにする。 module モジュール名 モジュールの内容 endモジュールは他のクラスからincludeまたはextendして使用する。 module MyModule def hello_world puts 'Hello, World!' end end class MyClass1 include MyModu…

配列の要素が条件を満たすか調べる

Array#any? 配列に1つ以上、条件を満たす要素があるか調べるにはArray#any?を使う。 p [1, 2, 3].any?{|i| i % 2 == 0} #=> true p [1, 3, 5].any?{|i| i % 2 == 0} #=> false Array#all? 配列のすべての要素が、条件を満たしているか調べるにはArray#all?を…

オブジェクトを文字列に変換する

デバッグ時にはオブジェクトを文字列に変換して内容を確認したい場合がある。RubyではObjectにObject#to_sが定義されているため、明示的に禁止されていない限り、あらゆるオブジェクトを文字列化できる。 obj = Object.new puts obj.to_s #=> #<Object:0x000000009a0d30> Object.inspe</object:0x000000009a0d30>…

文字列を16進数文字列に変換する

文字列を16進数文字列に変換するにはString#unpackを使って以下のようにする。 STring#unpackは配列を返すので、先頭要素を取り出すためArray#firstを使っている。 p "123abc".unpack('H*').first #=> "313233616263" 逆に16進数文字列を普通の文字列に変換…

HTTPクライアントを実装する

net/http RubyでHTTPを扱うには、net/httpライブラリを利用する。 Net::HTTP.startで指定したホストとポートに対してHTTPアクセスを開始する。 実際のアクセスはNet::HTTPのインスタンスを利用してNet::HTTP#getなどのメソッドで行う。 require 'net/http' r…

ファイルを開く

Rubyでファイルを開くには、openまたはFile.openを使用する。 第1引数には開くファイルのパスを、第2引数にはフラグを指定する。第2引数のフラグは以下の文字列または定数の論理和で指定する。 フラグ文字列 意味 r 読み込みモード w 書き込みモード a 追記(…

三角関数を使用した計算をする

Rubyでは、Mathモジュールに三角関数が定義されている。 これらの関数に与えるのはラジアンである。 モジュール関数 意味 sin 正弦関数 sinh 双曲線正弦関数 cos 余弦関数 cosh 双曲線余弦関数 tan 正接関数 tanh 双曲線正接関数 asin 逆正弦関数 asinh 逆双…