LoginSignup
57
62

More than 5 years have passed since last update.

Rubyチートシート

Last updated at Posted at 2014-06-29

たまにしか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
# 例外の説明
57
62
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
62