From: matz@... (Yukihiro Matsumoto) Date: 1997-07-03T00:48:15+09:00 Subject: [ruby-list:3257] mini-reference (syntax) まつもと ゆきひろです rubyのミニ・リファレンス文法編です. まあ,大体分かったけどちょっとど忘れという時には役立つかもし れません. -- = ミニリファレンス == 文法 + コメント # this is a comment + 代入 $var = expr # グローバル変数 @var = expr # インスタンス変数 var = expr # ローカル変数(初出は宣言でもある) VAR = expr # 定数(一度だけしか代入できない) obj.attr = expr # 属性代入(メソッド'attr='呼出) ary[idx] = expr # 要素代入(メソッド'[]='呼出) var1,var2 = expr1,expr2 # 多重代入 var1,var2 = method() # 複数の戻り値(配列を返す) first,*rest = method() # 残りをまとめて代入 + リテラル 1 # 整数 0xff # 16進整数 033 # 8進整数 3.14 # 浮動小数点数 "hello world\n" # 文字列 'hello world\n' # ''はエスケープがない [1,2,3,4] # 配列式 {1=>2,2=>4,3=>6} # 連想配列 /^From / # 正規表現 + メソッド呼出 method(call) method(arg1,arg2,*others) # 配列を引数として展開 method(arg1,arg2,1=>2,2=>4) # 末尾には連想配列を直接おける method arg1, arg2 # 曖昧でない時,括弧は省略可 + 式 atan2(1,1) # 関数のようにみえるがメソッド 1 + 2 # +もメソッド呼出 ary[0] # []というメソッド呼出 + if if condition if_true elsif another_cond if_true2 else if_false end statement if cond # 修飾子形式 + unless unless condition if_false else if_true end statement unless cond # 修飾子形式 + case case expr # 比較は === で行われる when 1 # exprが1 statements1 when 2,3 # exprが2または3 statements2 when 4..10 # exprが4から10 statements3 when "string" # 文字列も比較できる statements4 else # どのwhenにもあてはまらなかった statementsN end + whileループ while cond # 条件が真の間ループ statements end statement while cond # 修飾子形式 begin statements end while cond # 末尾で条件評価 + untilループ until cond # 条件が偽の間ループ statements end statement until cond # 修飾子形式 begin statements end until cond # 末尾で条件評価 + forループ for var in enumerable # 要素に対する繰り返し statements end for var1,var2 in enumerable # 多重代入がおきる statements end + イテレータ呼び出し iter(args) do |var| # イテレータブロックを指定して呼出 statements end iter(args) {|var| # 別形式 statements } enumerable.each do |var| # forの実体 statements end + ループ脱出 break # ループを中断 next # ループ条件へジャンプ redo # ループ先頭へジャンプ retry # イテレータの再実行 + メソッド定義 def foo(arg,arg2=default,*rest) statements end + 特異メソッド定義 def obj.foo(arg,*rest) # オブジェクトに固有のメソッド statements end + undef undef method # メソッドの取消 + alias alias method1 method2 # メソッドに別名をつける + クラス定義 class Foo