1

関数に渡された名前による呼び出し引数を出力しようとしています。つまり、次のとおりです。

def testme(arg: => Int) println(arg)

そして、次のように呼び出します。

test(sum(List(1, 2, 3))

sum メソッドが存在する場合。合計ではなくtestme印刷したい。sum(List(1, 2, 3))

これを達成する方法はありますか?

4

1 に答える 1

-1

いいえ、コンパイラをハッキングしないと不可能です。f: => A が渡されると、 f を呼び出すとすぐに評価されます。scala は Java バイト コードにコンパイルされ、スクリプト言語のように解釈されないため、必要な型の中間形式になることはありません。

編集: Regis が指摘しているように、scala は scala マクロを介して API をコンパイラに公開するため、コンパイラのハッキングは一部の言語よりも簡単です。これはまだかなり複雑であり、別の方法で解決策を見つけたほうがよいでしょう。

于 2013-09-19T20:45:13.450 に答える