是class参数带option类型不需要传值吗?

Is class parameters with the option type need not to pass a value?

此代码:

class B(d:Int,val b:Option[Int])

object A extends App  {
  val c=new B(1)
}

在第B(1)行是错误的,我必须给出b的值,比如

new B(1,Some(2))

我正在学习slick,示例代码为:

final class MessageTable1(tag: Tag) extends Table[Message](tag, "message") {

class Table 在文件 main\scala\slick\relational\RelationalProfile.scala 第 119 行中:

abstract class Table[T](_tableTag: Tag, _schemaName: Option[String], _tableName: String) 
  extends AbstractTable[T](_tableTag, _schemaName, _tableName)

所以_schemaName的类型是Option[String],但是当示例代码创建Table时,似乎没有给它传值,只给了另外两个参数:tag"message",为什么?

Three lines down,可以看到Table有一个辅助构造函数,有两个参数类型TagString (注意:这里没有Option):

def this(_tableTag: Tag, _tableName: String) = this(_tableTag, None, _tableName)

这是您显示的示例代码中调用的构造函数,而不是主构造函数。

你还可以看到the documentation中的两个构造函数。