質問

私はあなたが匿名関数を作成することができます知っている、とその戻り値の型推論コンパイラを持っています:

val x = () => { System.currentTimeMillis }

ただ、静的型付けのために、それは同様にその戻り値の型を指定することが可能ですか?私はそれが物事がたくさん明確になると思います。

役に立ちましたか?

解決

私の意見では、

あなたはしているが、物事はより多くのそれをクリアしようとしている場合があり、型注釈ではなく、関数の結果を追加することにより、識別子Xの期待を文書化することをお勧めします。

val x: () => Long = () => System.currentTimeMillis

次に、コンパイラは、右側の関数がその期待を満たしていることを確認します。

他のヒント

val x = () => { System.currentTimeMillis } : Long

ファビアンは簡単な方法を与えたが、砂糖を細かく管理のようなあなたであれば、いくつかの他の方法が含まれます:

val x = new (() => Long) {
  def apply() = System.currentTimeMillis
}

または

val x = new Function0[Long] {
  def apply() = System.currentTimeMillis
}

あるいは

val x = new {
  def apply(): Long = System.currentTimeMillis
}

は、それが適用されます。

を持っているかどうかだけ、機能から下降した場合、ほとんどの状況では違いはありませんので、
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top