Part IIIからやればよかったかな。
お、*rest が使える。
def varargs(arg1, *rest)
...
restはArrayになると。
Iteratorについては、methods定義の際に&で明示的に引数指定された場合だけ、Proc objectに自動変換されるのか。そいで、その呼び出しはyieldではなく、.callとなる。
method を call するとき、receiver をomitすると、selfだということになる。
selfって? おお、あのselfか。pythonでよく見る。
すべての method はvalueを返す。関数型的な側面?
returnもある。大域脱出。
おお、*で多値ができるのか。
irb(main):006:0> def five(a, b, c, d, e)
"I was passed #{a} #{b} #{c} #{d} #{e}"
end
def five(a, b, c, d, e)
"I was passed #{a} #{b} #{c} #{d} #{e}"
end
nil
irb(main):009:0> five(*(10..14).to_a)
five(*(10..14).to_a)
"I was passed 10 11 12 13 14"
irb(main):010:0>
ああ、ちゃう、これは多値じゃない。わからん、Ocamlにあったかね。
あ、lambdaだ。これはProc objectをつくる、と。
keyword parameter は無い。代わりにhashを使う、と。
これ、書きぶりはkeyword parameterとほぼ同じ。
0 件のコメント:
コメントを投稿