たまにしかRubyを触らないので毎回、調べ直す自分のためのチートシート
コメント
"#"から行末まで。
複数行は下記で挟む。
=begin
・・・
=end
変数各種
変数の扱いは最初の文字で決まるので注意する。
- ローカル変数(小文字で始まる)
- グローバル変数(“$"で始まる)
- インスタンス変数(“@"で始まる)
- 定数(大文字で始まる)
- 疑似似変数(self、true、false、nil、FILE、LINE)
| 変数 | 意味 |
|---|---|
| $! | もっとも近い例外 |
| $~ | 最後のパターンマッチに関するデータ |
| $& | 最後のパターンマッチした文字列 |
| $. | 最後に読んだファイルの行番号 |
| $< | コマンドライン引数や標準入力の仮想ハンドル |
| $> | 標準出力 |
| $_ | 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]) | 指定のパスを指定のモードでオープンする |
| 標準出力へ表示 | |
| 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
# 例外の説明