坂本さま
ご返信ありがとうございます。
なるほど!!理解できました。
また、以下のようにして、実行してみましたが、やっぱり同じ結果ですね。
ありがとうございました。
===
twice( (d:Double) => d + 1, 5)
===
ちなみに、
twice( d:Double => d + 1, 5)
のように、d:Doubleの括弧を除くとエラーになりました。
これには、そのまま、実行できそうな気がしたので、ちょっと意外でした。
On 10月31日, 午後4:41, SAKAMOTO Kazunori <
exka...@gmail.com> wrote:
> M.I.さん:
>
> こんにちは、坂本と申します。
>
> p147の8.5節「プレースホルダー構文」にて説明されています。
>
> この場合の _ + 1 は (d: Double) => d + 1 という
> 関数リテラルのシンタックスシュガーになると思います。
>
> 2009/10/31 M.I. <
inoue.masay...@gmail.com>:
>
>
>
>
>
>
>
> > こんにちは。
>
> > 現在、Scalaスケーラブルプログラミング(コップ本)にて、Scalaを勉強中のものです。
> > すこし理解できない箇所が出てきたので、ご教授ください。
>
> > 第9章の9.4の「新しい制御構造を作る」P167についてです。
>
> > 例題として、twiceという関数を定義して、opという関数を二回実行させています。
>
> > === 引用 ===
> > def twice(op: Double => Double, x: Double) = op(op(x))
>
> > twice(_ + 1, 5)
> > === 引用 ===
>
> > となっています。
>
> > ここの、twice(_ + 1, 5) の「_」の意味がよくわかりません。
> > 具体的には、どのような意味になるのでしょうか?
>
> > ちなみに、上記twiceの実行結果は、7となっています。
>
> > たぶん、opは以下のような定義になっているのだと思います。
>
> > def op(x:Double) = { x + 1.0 }
>
> --
> 坂本 一憲
> 早稲田大学 理工学術院 基幹理工学研究科
> 情報理工学専攻 鷲崎研究室 修士1年
> E-mail:
exka...@gmail.com /
ka...@ruri.waseda.jp
> Mobile:
unpack-ka...@docomo.ne.jp
> TEL: 090-7800-6023
> twitter: exkazuu