博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala ContextBound
阅读量:6038 次
发布时间:2019-06-20

本文共 1112 字,大约阅读时间需要 3 分钟。

hot3.png

马老爷子真牛逼,泛型搞了这么多的上界、下界、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 testimplicitimport 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

你可能感兴趣的文章
intellij idea新建maven项目,一直loading archetype list.....
查看>>
下标的使用
查看>>
Linux下命令行显示当前全路径方法
查看>>
【转】轻量级文本编辑器,Notepad最佳替代品:Notepad++--不错
查看>>
你get了无数技能,为什么一事无成
查看>>
[Immutable,js] Iterating Over an Immutable.js Map()
查看>>
Java学习笔记(五):异常处理
查看>>
Android开发学习之Intent具体解释
查看>>
[转]Java日期时间使用总结
查看>>
[mysql] mysql表名忽略大小写
查看>>
Web.config配置文件详解(新手必看)(转)
查看>>
JAVA复习2 JAVA开发环境配置
查看>>
2016CVTE编程题:兔子藏洞
查看>>
Linux遍历目录
查看>>
教务考试系统的总结
查看>>
C语言事实上不简单:sizeof
查看>>
mysql 执行reset master 风险
查看>>
ModelState.IsValid总为false原因
查看>>
HBase集成Zookeeper集群部署
查看>>
OC初步 (一)
查看>>