class - scala 案例类问题

标签 class scala case

我有两个关于 '::' 案例类的问题。

:: 可以用作

case head :: tail => ...

它是如何工作的?意思是,Scala 用来将 List 实例与::case 类匹配的流程究竟是什么?鉴于我有一个 MyClass 类,带有操作符 op,我可以创建一个名为 op 的案例类,我可以将其用作:
case foo op bar => ....

?

最佳答案

     scala> abstract class Stack {
     |     def push(n :Int):Stack
     | }
      defined class Stack

     scala> final case class push(st :Stack,hd :Int) extends Stack {
     |     override def push(n :Int):Stack = new push(this,n)
     | }
     defined class push

     scala> object NullStack extends Stack {
     |     override def push(n :Int):Stack = new push(null,n)
     | }
     defined module NullStack

     scala> val s = NullStack.push(1).push(2)
     s: Stack = push(push(null,1),2)

     scala> def test(s :Stack) = s match { case st push i => println(st +"push " + i) }
     test: (Stack)Unit

     scala> test(s)
     push(null,1)push 2

关于class - scala 案例类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1521011/

相关文章:

c++ - 在头文件中定义类是否正确?

scala - 如何在 Flink 中使用多个计数器

mysql - 需要每个值类型的行数

java - ZK标签中的switch和case属性?

java - 为什么在打印第一个 if case 后 switch case 没有中断?

html - 无法设置未定义的属性 'width'

objective-c - Cocoa Mac 应用程序的一个大类与几个小类的比较

c++ - 我应该对类中的所有值使用 setValues 吗?

sql - 如何使用 scala slick 3 发送纯 SQL 查询(并检索结果)

java - 使用 git 子模块管理 sbt 依赖