1. ホーム
  2. scala

[解決済み] Scala における => と () => の意味 [重複].

2023-04-08 06:13:40

質問

私はScalaの初心者で、とても気に入っているのですが、時々驚かされることがあります。例えば

clickedCallbacks: List[() => Unit])

誰か教えてください。 =>() => はScalaではどういう意味ですか?

どのように解決するのですか?

=> は、関数のインスタンスを生成するための構文上の糖です。scalaの全ての関数はクラスのインスタンスであることを思い出してください.

例えば Int => String という型は Function1[Int,String] の型を持つ引数を取る関数です。 Int を返し String .

  scala> val f: Function1[Int,String] = myInt => "my int: "+myInt.toString
  f: (Int) => String = <function1>

  scala> f(0)
  res0: String = my int: 0

  scala> val f2: Int => String = myInt => "my int v2: "+myInt.toString
  f2: (Int) => String = <function1>

  scala> f2(1)
  res1: String = my int v2: 1

ここで myInt に渡された引数の値にバインドされます。 ff2 .

() => T は、引数を取らずに T . と等価です。 Function0[T] . () はゼロパラメータリストと呼ばれると思います。

 scala> val f: () => Unit = () => { println("x")}
 f: () => Unit = <function0>

 scala> f()
 x

scala> val f2: Function0[Unit] = () => println("x2")
f: () => Unit = <function0>

scala> f2()
x2