Rubyチートシート

More than 5 years have passed since last update.

たまにしかRubyを触らないので毎回、調べ直す自分のためのチートシート


コメント

"#"から行末まで。

複数行は下記で挟む。

=begin

・・・
=end


変数各種

変数の扱いは最初の文字で決まるので注意する。


  • ローカル変数(小文字で始まる)

  • グローバル変数(“$"で始まる)

  • インスタンス変数(“@"で始まる)

  • 定数(大文字で始まる)

  • 疑似似変数(self、true、false、nil、FILELINE)

変数
意味

$!
もっとも近い例外

$~
最後のパターンマッチに関するデータ

$&
最後のパターンマッチした文字列

$.
最後に読んだファイルの行番号

$<
コマンドライン引数や標準入力の仮想ハンドル

$>
標準出力

$_
getsコマンドなどで読み込んだ文字列 


構文


for〜in

for x in [ 1, 2, 3]

puts(x)
end


do

イテレータ do |i|

i.xxxxx
end


ループ制御


  • break ループを中断終了

  • next 以降のループの処理を行わず、次のループに


クラス


クラス

class Foo

# new で実行
def initialize
# メンバー変数は @つき
@variable = 0
end
 

#メソッド
def function1( foo , bar )
x = ...
#do something
return x
end

#クラスメソッド
def self.function2( foo , bar )
#do something
end

end


インスタンス変数とアクセッサ

Fooクラスのオブジェクトにインスタンス変数barを作り、Fooクラスのインスタンスfooではfoo.barとしたいなどの場合、attr_reader,attr_writer,attr_accessorを使用する。

class Foo

def initialize
@bar = nil
end

attr_accessor :bar
...
end


初期化

finstance = Foo.new


組み込みメソッド

標準的な処理は各クラスに自動的に組み込まれる組み込みメソッドが存在し、省略可能なselfオブジェクトの組み込みメソッドで呼び出される。つまり、print("xxxx")はself.print("xxxx")に同じである。

組み込み関数
説明

chop
最後の文字を取り除く

eval(str)
文字列をRubyプログラムとして評価した結果を返す

exec(str)
文字列のコマンドを実行する

fork()
プロセスのフォーク

gets([rs])
コマンドラインの引数のファイルまたは標準入力から読み込む

sub(x,[y])
$_の先頭のxをyで置換する

gsub(x,[y])
$_の全てのxをyで置換する

open(path[,mode])
指定のパスを指定のモードでオープンする

print
標準出力へ表示

printf
C言語のprintfと同じ

puts
改行付き出力

sprintf
C言語のsprintfと同じ

...


文字列


文字列操作

文字列の操作
意味

==
文字列が同じか

=~
パターンと同じか

a+b
文字列の連結

a*n
文字列の繰り返し

s.index(str[,pos])
文字列の場所を返却する

s.length
文字列の長さ

s.sub(reg[,str])
文字列の置き換え


パターンマッチ

文字パターン
説明

.
任意の一文字

[]
文字クラス指定 [a-z]でaからzまで

[^]
文字列クラスの逆

\w
[0-0A-Za-z_]と同じ

\s
空白文字[\t\r\n\f]

\d
数字と同じ

*
直前の表現の0回以上の繰り返し

+
直前の表現の1回以上の繰り返し

?
直前の表現の0回または1回

^
行頭

$
行末

パイプ記号
選択


ありがちなパターンマッチ例

文字列の始まりがbarで始まる場合

if( str =~ /^bar/ ))

文字列の最後がfoo

if( str =~ /foo$/ )


文字列を使って正規表現を作成

regexp = Regexp.new( "^foo" )

str.scan( regexp )


その他

数字を文字列に

num.to_s

日付を文字列に

d = Date.today

d.strftime("%Y/%m/%d")


ファイル/ディレクトリ


Dirクラス

Dirクラスメソッド
説明

Dir.glob(pattern)
ワイルドカード展開を行った結果を配列で返す

Dir.chdir(path)
ディレクトリ移動

Dir.foreach(path)
ディレクトリの中の各要素をイテレータで取得

Dir.mkdir(path[,mode])
ディレクトリ作成


rdocの書き方

# コメント

# ==== Args
# 引数名1 :: 説明
# 引数名2 :: 説明
# 引数名3 :: 説明
# ==== Return
# 返り値の説明
# ==== Raise
# 例外の説明