A => A = a => a 在 Scala 中是什么意思

What does A => A = a => a mean in scala

我在 scala 中发现了以下我不理解的语法

object Category {
    def id[A]: A => A = a => a
}

特别是这部分A = a => a

谁能把它翻译成更易读的语法

这一行:

def id[A]: A => A = a => a

定义了一个名为 id 的方法,它有一个类型参数 A.

方法的 return 类型是 A => A,它是:接受 A 和 return 一个 A 的函数。

=:a => a之后的部分是id方法的主体。它是一个函数的函数文字,它接受一个值 a 和 return 相同的东西 a.

您具体询问的部分:A = a => a 本身不是一个部分。 A => A是方法的return类型ida => a是方法体。就像任何其他方法一样,这两部分之间的 = 将方法声明与方法主体分开。

你可以这样写:

def id[A]: Function1[A, A] = a => a

这是一种方法,return 是一个函数,它接受一个 A 和 return 另一个 A 并且它是 return 的函数是一个identity(你得到一个 A 类型的变量 a 而只是 return 它):

scala> object Category {
 |     def id[A]: A => A = a => a
 | }
defined module Category

scala> Category.id[Int]
res0: Int => Int = <function1>

scala> res0(0)
res2: Int = 0

老实说,我不确定你在这里想要达到什么目的。