逆に、Klass::Fooとした場合、常に定数と見なされるという制限があります。クラスメソッド呼び出しに使うという流儀がありますが、この点は要注意です。使うか、Klass::Foo()と括弧でメソッド呼び出しであることを明示する必要があります。続いたものが許されます。つけるようになっています。ついている場合、その引数の値が展開されて渡されます。経由して行なわれます。:foo(1,*[2,3,4])foo(1,*[])foo(1,*[2,3,4],5)foo(1,*[2,3,4],5,*[6])は、それぞれfoo(1,2,3,4)foo(1)foo(1,2,3,4,5)foo(1,2,3,4,5,6)と同じです。ついている場合、その引数で指定した手続きオブジェクト(Proc)やメソッドオブジェクト(Method)がブロックとしてメソッドに渡されます。メソッドは関数形式(レシーバを省略した形式)でしか呼び出すことができません。メソッドはそのメソッドを持つオブジェクトのメソッド定義式内でなければ呼び出せません。省略することができます。これを用いることでキーワード引数を渡すことができます。クラス/メソッドの定義/メソッド定義で解説されているキーワード引数に分解されて引き渡されます。場合は以下のように働きます。ない場合は通常のメソッド呼び出しが行われます。要素代入(アトリビュート)に対しても使えます。現在のメソッドがオーバーライドしているメソッドを呼び出します。括弧と引数が省略された場合には現在のメソッドの引数がそのまま引き渡されます。proc_object)ブロック付きメソッドとは制御構造の抽象化のために用いられるメソッドです。最初はループの抽象化のために用いられていたため、特にイテレータと呼ばれることもあります。(ブロックと呼ばれる)を後ろに付けてメソッドを呼び出すと、そのメソッドの内部からブロックを評価できます。ブロックよりも強く結合します。ブロックはメソッドbの引数、aの値とbの返り値とがfoobarの引数ブロックの中で初めて代入された(宣言された)ローカル変数はそのブロックの中でだけ有効です。...end以下は逆にブロック外でも有効な例です。使えるendブロックの部分だけを先に定義して変数に保存しておき、後からブロック付きメソッドに渡すことも出来ます。それを実現するのが手続きオブジェクト(Proc)です。修飾した手続きオブジェクトを渡します。代わりにメソッドオブジェクト(Method)を渡すことも出来ます。この場合、そのメソッドを呼ぶ手続きオブジェクトが生成され渡されます。修飾した引数として渡すことができます。オブジェクトを返すことが期待されます。引数を指定した場合はその値がブロック付きメソッドの戻り値になります。yield自分で定義したブロック付きメソッドでブロックを呼び出すときに使います。間にはさまれた変数(ブロックパラメータ)に代入されます。]]引数をブロックパラメータとして渡してブロックを評価します。(同じブロックが3つのyieldで3回起動された。55ブロックパラメータの代入は演算子式/多重代入と同じルールで行われます。ブロック内で最後に評価した式の値を返します。