Scala 为什么这种模式匹配不起作用?

Scala 为什么这种模式匹配不起作用?,scala,pattern-matching,Scala,Pattern Matching,我有一个泛型类Book[T](索引:Int,类型:T),还有一个类型为Book的对象foo。我不知道如何访问索引和类型。我试过: 1. foo match { case Book[T](index: Int, type:T) => {} } 2. foo match { case Book(index: Int, type:T) => {} } 3. foo match { case foo: Book[T] => { foo.index } } 所有故障均显示以下消息: 1

我有一个泛型类
Book[T](索引:Int,类型:T)
,还有一个类型为
Book
的对象
foo
。我不知道如何访问索引和类型。我试过:

1. foo match { case Book[T](index: Int, type:T) => {} }
2. foo match { case Book(index: Int, type:T) => {} }
3. foo match { case foo: Book[T] => { foo.index } }
所有故障均显示以下消息:

1. class Book does not take type parameters
2. class Book not found
3. index is not a member of Book

谢谢。

好的
类型
是scala已经使用过的关键字。 您可以尝试使用其他关键字而不是
type
,并使用
case class
进行模式匹配,以实现相同的效果

 case class Book[T](index: Int, bookType : T)

  val foo =  Book(1,Book)                         

  // foo  : stack.Book[stack.Book.type] = Book(1,Book)

  foo match {
    case Book(i,t) => "index : " + i + ", type : " + t // play around with i & t
  }                                     

 //> res0: String = index : 1, type : Book

所以你有
case类Book[T](index:Int,`type`:T)
作为书的定义?@om nom nom-这是一个反问句,对吗?它显然不是
案例类
索引
将是
书籍
的成员。所以这是一个问题…@RexKerr。。。好的,让我们展示所有的卡片:
type
是scala中的一个关键字,所以我们不能简单地将它用作变量名:@user1377000必须用反勾来转义它。它只是
classbook[T](index:Int,type:T)
。好吧。。。我怎样才能达到我想要的呢?<代码>类书和 case类图书有什么不同?