Scala,构造函数currying的类型

时间:2015-07-25 11:44:59

标签: scala typeclass currying

我刚写了Matrix类,后面有constuctor:

class Matrix (val dim1: Int)(val dim2: Int, val args: Matrix.IntMode*)

所以,我想得到一个矢量类,第一个维度总是1,并尝试类似的东西:

  type Vector = Matrix(1) _

但是找不到正确的方法来实现我的想法。对于这个

的任何帮助,我将不胜感激

2 个答案:

答案 0 :(得分:4)

以下内容如何:

class A(val a: Int)(b: Int, c: Int)
class B(b: Int, c: Int) extends A(1)(b,c) {
  override def toString = s"$a $b $c"
}
val b = new B(3, 4)
println(b)

在Scala工作表中运行时会产生以下内容:

1 3 4

我必须将参数a变为val,以便b <{1}}显示toString

答案 1 :(得分:0)

我强烈推荐 mattinbits 解决方案。

但是,如果你不想定义另一个类,你可以通过以下方式实现类似的东西:

type Vector = Matrix
object Vector {
  def apply(dim2: Int, args: Matrix.IntMode*): Vector = new Matrix(1)(dim2, args: _*)
}

val myVector = Vector(2, ...)