44得票3回答
unapply和unapplySeq有什么区别?

为什么Scala同时拥有unapply和unapplySeq?它们之间有什么区别?我应该在什么情况下更倾向于使用其中一个?

21得票2回答
Scala:Case类的unapply与手动实现以及类型擦除

我试图理解Scala对Case Classes的处理方式,使它们免受类型擦除警告的影响。 假设我们有以下简单的类结构。这基本上是一个Either:abstract class BlackOrWhite[A, B] case class Black[A,B]( val left: A ) ex...

21得票3回答
如何进行多参数列表类的匹配模式?

考虑下面这个类: class MyClass {  public int myInt;  public string myString;}class DateTime(year: Int, month: Int, day: Int)(hour: Int...

19得票2回答
Scala中高种类类型推断的限制是什么?

在下面的简化示例代码中:case class One[A](a: A) // An identity functor case class Twice[F[_], A](a: F[A], b: F[A]) // A functor transformer type Twice1[F[_]] =...

17得票5回答
提取器可以在case语句的参数中(或任何其他使用提取器的地方)进行定制吗?

基本上,我想能够构建自定义提取器而不必在使用之前将其存储在变量中。 这不是一个实际的例子,更可能用于正则表达式或其他类似字符串模式的构造中,但希望它能解释清楚我正在寻找什么:def someExtractorBuilder(arg:Boolean) = new { def unapply...

16得票1回答
Scala的“抽取器”能在unapply上使用泛型吗?

我能不能在提取器的unapply方法上使用一个通用类型和一个隐式“转换器”来支持针对参数化类型的特定模式匹配呢? 我想做到这一点(请注意unapply行中使用了[T]), trait StringDecoder[A] { def fromString(string: String): ...

13得票1回答
Scala - unapply能返回可变参数吗?

下面的L1对象可以工作。 我可以通过传递可变参数来"创建"L1,这很好,但我想能够使用相同的语法将值分配给L1。不幸的是,我在这里所做的方式需要将Array嵌套在L1中,这使得语法更加丑陋。object L1 { def apply(stuff: String*) = stuff.mk...

9得票1回答
Scala - 使用unapply进行隐式转换

我希望提取器可以隐式转换其参数,但似乎不起作用。考虑这个非常简单的情况: case class MyString(s: String) {} implicit def string2mystring(x: String): MyString = new MyString(x) implic...

8得票1回答
Scala - 为Int类型添加unapply方法

我希望能够做到这一点: scala> val Int(i) = "1" i: Int = 1 但是,Int没有 unapply 方法。 我找到了这个答案,它提供了如何将方法隐式地添加到现有对象的说明,所以我尝试了一下。他们提供的解决方案有效,但不幸的是不能用于模式匹配。以下是我的...