アットウィキロゴ

9.5名前渡しパラメータ

理解できていないので勉強中です。
  • 遅延評価ではないが、似たような動きをする。
  • 以下のように宣言をする。これだとStringもStringが戻り値の関数も渡すことができる。
def test(x : => String)

書籍のP180のコードに手を加えた物を書きます。

 val assertionsEnabled = true
 def byNameAssert(predicate : => Boolean) = {
   if (assertionsEnabled && !predicate)
     throw new AssertionError
   else true
上記のように定義し、以下の呼び出しをします。
println(byNameAssert(3 > 1))
以下のように出力されます。
true

次に式ではなくBoolean値を渡してみます。
   try {
     byNameAssert(false)
   } catch {
     case ex : AssertionError => println("assert error")
   }
以下のように出力されます。
assert error

最後に以下のようにtrueを返す関数を宣言してbyNameAssertに渡してみます。
def returnTrueValue(x: String) = true

出力は以下になります。
true

名前渡しの形式にすることで、条件式も普通の値も関数値も渡せることが確認できると思います。
最終更新:2013年10月07日 22:43
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。