Scala ContextBound

本文通过一个选择理想女孩的例子介绍了Scala中的泛型上下界使用方法。文章详细讲解了如何定义带有上下界的泛型类,并通过实例演示了如何利用隐式转换实现具体的业务逻辑。

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

马老爷子真牛逼,泛型搞了这么多的上界、下界、ViewBound、ContextBound,开发学的不亦乐乎啊

需求仍然是选择girl.

步骤:

1、新建MyGirl类

class  MyGirl(val name:String,val age:Int,val faceValue:Int){

}

2、新建ContexBoundDemo

class ContextBoundDemo[T: Ordering] {//为啥这个地方Ordering后面又不加T了呢?真尼玛诡异
  def selectGirl(g1: T, g2: T): T = {
    val ord: Ordering[T] = implicitly[Ordering[T]]
    if (ord.gt(g1, g2)) g1 else g2
  }
}

这个地方,我不太理解,为啥Ordering后面就不加T了,之前Ordered全加的,梁东老师讲的不是很透彻,只能靠我再去看书了。

3、新建一个隐式值

package testimplicit

import scalapackage.testfanxing.MyGirl

/**
  * Created by Germmy on 2018/4/8.
  */
object MyPreDef {
   implicit  object  OrderingGirl extends  Ordering[MyGirl]{
    override def compare(x: MyGirl, y: MyGirl): Int = {
      if(x.faceValue==y.faceValue){
        y.age-x.age
      }else{
        x.faceValue-y.faceValue
      }
    }
  }
}

4、新建main

object ContextBoundDemo {
  def main(args: Array[String]) {
    import testimplicit.MyPreDef.OrderingGirl
    val cbd = new ContextBoundDemo[MyGirl]
    val g1=new MyGirl("daya",40,90)
    val g2=new MyGirl("erya",39,90)
    val res=cbd.selectGirl(g1,g2)
    println(res.name)
  }
}

 

转载于:https://my.oschina.net/windows20/blog/1796431

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值