Scala编程基础--traint和匹配

本文深入探讨Scala中Trait的使用方法,通过具体示例展示了如何定义和实现Trait,以及Trait与类之间的关系。同时,文章详细介绍了Scala的Match表达式的使用技巧,包括基本匹配、case class的匹配和复杂条件匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

traint相当于定义了一个接口例如:

trait Equal {
  def isEqual(x:Any) :Boolean
  def isNotEqual(x:Any) :Boolean = !isEqual(x)
}

接口 子类中必须重写(不需要使用关键字override)

class  Point(xc:Int, yc:Int) extends Equal{
  var x: Int= xc
  var y: Int = yc
  def isEqual(obj: Any):Boolean  = {
    return obj.isInstanceOf[Point] && obj.asInstanceOf[Point].x == x
  }
}

isIntanceOf[Point] 是判断是否是Point实例, asinstanceOf[Point] 返回Point实例

test:

 val p1 = new Point(2, 3)
 val p2 = new Point(2, 4)
 val p3 = new Point(3, 3)
 println(p1.isNotEqual(p2))
 println(p1.isNotEqual(p3))
 println(p1.isNotEqual(2))
output:
 false
 true
 true

匹配

关键字:   match,  =>

普通匹配

def getData(data:Any) = data match {
    case  1 => println("1")
    case  y:Int => println(y)
    case  "one" => {println("okk");println("one")}
    case _ => println("default")
  }

测试:

getData(1)
getData(4)
getData("one")
getData(data = 212.4)

output:
1
4
okk
one
default

定义匹配样例:

关键字 case 

case class Person(name: String, age: Int)
val alice = new Person("Alice", 25)
val bob = new Person("Bob", 32)
val charlie = new Person("Charlie", 32)
for (person <- List(alice, bob, charlie)) {
        person match {
          case Person("Alice", 25) => println("Hi Alice!")
          case Person("Bob", 32) => println("Hi Bob!")
          case Person(name, age) =>
            println("Age: " + age + " year, name: " + name + "?")
        }
}
output:
Hi Alice!
Hi Bob!
Age: 32 year, name: Charlie?

1. Person(name, age) 匹配其它的用户

2. case class Person(name:String,  age:Int) 定义匹配的样例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值