Scala REPL ではSeq[String]()
、 type のパラメーターのデフォルト値として使用できますSeq[T]
。
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101).
Type in expressions to have them evaluated.
Type :help for more information.
scala> def d[T](foo: Seq[T] = Seq[String]()) = 12
d: [T](foo: Seq[T])Int
scala> d()
res0: Int = 12
IDEA で同じことを試してみると、「Seq[String] が期待される型 Seq[T] に準拠していません」というエラーが表示されます。なんで?
- IntelliJ IDEA 2016.2.4
- Scala プラグイン 2016.2.1
- スカラ 2.11.7
注 1: 申し訳ありませんが、私の例の関数があまり意味をなさないことはわかっています。ただし、私の実際の (そして便利な) 関数は、ここに投稿するには不必要に複雑です。
注 2: 最初は、この例の型名は型TではなくAnyでしたが、これは良い考えではなく (scala.Any を隠しているため)、混乱を招きました。したがって、私はそれを修正しました。