0

我对 Scala 是全新的,但我在调试我的东西时遇到了麻烦。我正在阅读的书中有这个“测试”,以便用一种方法制作一个Family类。familySize()我的解决方案是这样的:

class Family(names:String*) {
  def familySize():Int = {
    args.length
  }
}
val family1 = new Family("Mom", "Dad", "Sally", "Dick")
family1.familySize() is 4

但是,这会产生错误:

scala:8: error: value is is not a member of Int
family1.familySize() is 4
                     ^
one error found

我的问题是,我不知道如何查看args.length等于。我试着做family1.familySize(),但是当我运行它时它不会返回任何东西。

4

2 回答 2

2

首先你没有args

class Family(names: String*) {
  def familySize(): Int = names.length
}

你有几个选择:

1) 简单的相等运算符

val family1 = new Family("Mom", "Dad", "Sally", "Dick")
family1.familySize() == 4

2) 在Scalaz中有一个类似类型安全相等运算符的 JavaScript:

val family1 = new Family("Mom", "Dad", "Sally", "Dick")
family1.familySize() === 4

如果操作数具有不同的类型,则会引发异常

3) 不同的测试库,例如:ScalatestSpecs2Scalacheck。例如在具有必须匹配器的 ScalaTest 中:

family1.familySize must equal (4)
于 2013-07-22T19:15:50.700 回答
2

args不存在,它是names

class Family(names: String*) {
  def familySize(): Int = names.length
}

val family1 = new Family("Mom", "Dad", "Sally", "Dick")
println(family1.familySize()) // will output 4

您还可以避免使用大括号names.length作为单线。

于 2013-07-22T19:18:03.913 回答