在 Scala 中的函数定义之前放置 case class 是什么意思?
What does putting a case class before function definition in scala mean?
scala 中的语法是什么
final case class Transform[A, B](transform: A => Seq[B]) extends AnyVal
override def newInstance() = Transform { myParameter: myParameter =>
someOtherFunctionA(someOtherFunctionB.transform(myParameter)).toSeq
}
在函数定义之前(参数之前)放置一个 case class 类型是什么意思?
在 Scala 中,您还可以拥有函数值,它们是 Function1[A, B]
或 A => B
的实例(另一种写法 Function1[A, B]
)。这与 Integer
或 String
.
的实例没有什么不同
scala> val s: String = "abc"
// val s: String = abc
scala> val f: String => String = s => s + " added part"
// val f: String => String = $Lambda50/0x0000000800684040@632383b9
在 Scala 中,case classes 定义如下
case class MyCaseClass(
// these are constructor value members of the class
s: String,
// similar to above string member, your case class can also have a function member
f: String => String
)
所以,当你写作时
final case class Transform[A, B](transform: A => Seq[B]) extends AnyVal
您只是在定义一个 case class
,它具有 Function1[A, Seq[B]]
或 A => Seq[B]
.
类型的成员
现在,当您创建此 class 的实例时,您必须提供 A => Seq[B]
值作为构造函数参数。
您可以通过显式定义函数值然后传递给构造函数来实现,
scala> val transformFunction: String => Seq[Char] = s => s.toCharArray.toIndexedSeq
// val transformFunction: String => Seq[Char] = $Lambda95/0x0000000800758840@20711b02
scala> val transformInstance: Transform[String, Char] = Transform(transformFunction)
// val transformInstance: Transform[String,Char] = Transform($Lambda95/0x0000000800758840@20711b02)
或者,您可以直接提供值
scala> val transformInstance: Transform[String, Char] = Transform { s: String => s.toCharArray.toIndexedSeq }
// val transformInstance: Transform[String,Char] = Transform($Lambda11/0x00000008007b4040@6dc010a2)```
scala 中的语法是什么
final case class Transform[A, B](transform: A => Seq[B]) extends AnyVal
override def newInstance() = Transform { myParameter: myParameter =>
someOtherFunctionA(someOtherFunctionB.transform(myParameter)).toSeq
}
在函数定义之前(参数之前)放置一个 case class 类型是什么意思?
在 Scala 中,您还可以拥有函数值,它们是 Function1[A, B]
或 A => B
的实例(另一种写法 Function1[A, B]
)。这与 Integer
或 String
.
scala> val s: String = "abc"
// val s: String = abc
scala> val f: String => String = s => s + " added part"
// val f: String => String = $Lambda50/0x0000000800684040@632383b9
在 Scala 中,case classes 定义如下
case class MyCaseClass(
// these are constructor value members of the class
s: String,
// similar to above string member, your case class can also have a function member
f: String => String
)
所以,当你写作时
final case class Transform[A, B](transform: A => Seq[B]) extends AnyVal
您只是在定义一个 case class
,它具有 Function1[A, Seq[B]]
或 A => Seq[B]
.
现在,当您创建此 class 的实例时,您必须提供 A => Seq[B]
值作为构造函数参数。
您可以通过显式定义函数值然后传递给构造函数来实现,
scala> val transformFunction: String => Seq[Char] = s => s.toCharArray.toIndexedSeq
// val transformFunction: String => Seq[Char] = $Lambda95/0x0000000800758840@20711b02
scala> val transformInstance: Transform[String, Char] = Transform(transformFunction)
// val transformInstance: Transform[String,Char] = Transform($Lambda95/0x0000000800758840@20711b02)
或者,您可以直接提供值
scala> val transformInstance: Transform[String, Char] = Transform { s: String => s.toCharArray.toIndexedSeq }
// val transformInstance: Transform[String,Char] = Transform($Lambda11/0x00000008007b4040@6dc010a2)```