2017-07-08 9 views
1

を強調するために参照するために合法的ですが、私はこの機能を持っていると言う:

val f = (x: Int) => x + x 

さて、私は

val f = (_: Int) + x$1 

としてこの式を書き換えることができますこれは_理由が膨張をコンパイルx $ 1、x $ 2、...内部的には、x $ nを使ってアンダースコアのパラメータを参照するのは正当でしょうか? Scala言語仕様6.23は、この '新鮮な識別子'の規則を言わないので、避けるべきですか?

+1

"合法"とは何を意味するかによって異なります。私の本では、もしscalaの仕様にそれが言及されていなければ、スケーラが行く限り合法ではない – Dima

+0

思考のための食べ物: '$'は有効な識別子文字ではないプラットフォームではどうなるでしょうか? –

答えて

3

いいえ、「合法」ではありません。

  1. 「新鮮な識別子」の名前は、予告なく変更することがあります。
  2. コンパイラがスコープに表示される「新鮮な識別子」を選択することはほぼ間違いです。
  3. これは、コードの可読性や保守性を改善するものではなく、読者を混乱させる可能性があります。

あなたが実際にとする理由を想像するのは、これを行うにはです。

関連する問題