zoukankan      html  css  js  c++  java
  • Scala上下界以及比较器Ordered

    关键词:上界、视图界定、Comparable、Ordered

    1、ScalaUpperBound.scala

    package study.scala.base
    
    /**
     * @author yangwj
     * @date 2020/8/8 21:20
     * @version 1.0
     */
    //上界,不会发生隐式转换
    class CommCmp[T <: Comparable[T]](o1:T,o2:T){
      def bigger = if(o1.compareTo(o2)>0) o1 else o2
    }
    //视图界定,会发生隐式转换  Comparable
    class CommCmpView[T <% Comparable[T]](o1:T,o2:T){
      def bigger = if(o1.compareTo(o2)>0) o1 else o2
    }
    
    //视图界定,会发生隐式转换  Ordered
    class CommCmpViewOrder[T <% Ordered[T]](o1:T,o2:T){
      def bigger = if (o1 > o2) o1 else o2
    }
    
    class TeacherCmp(var name:String,var age:Int) extends Ordered[TeacherCmp]{
    
      override def toString = s"TeacherCmp($name, $age)"
    
      override def compare(that: TeacherCmp): Int = this.age - that.age
    }
    object ScalaUpperBound {
      def main(args: Array[String]): Unit = {
    
        val value = new CommCmp(Integer.valueOf(8), Integer.valueOf(5))
        println(s"上界:${value.bigger}")
       //具备自动隐式转换
        val valueView = new CommCmpView(9,10)
        println(s"上界:${valueView.bigger}")
    
        val yang = new TeacherCmp("yang", 73)
        val wen = new TeacherCmp("wen", 40)
    
        val valueViewTeacher = new CommCmpView(yang,wen)
        println(s"上界:${valueViewTeacher.bigger}")
    
      }
    
    }
  • 相关阅读:
    P6007 [USACO20JAN]Springboards G
    CF1000F One Occurrence
    P6100 [USACO19FEB]Painting the Barn G
    P5838 [USACO19DEC]Milk Visits G
    P4085 [USACO17DEC]Haybale Feast
    P4267 [USACO18FEB]Taming the Herd
    P1712 [NOI2016]区间
    CF786B Legacy
    P5665 划分
    NOI2020网上同步赛 游记
  • 原文地址:https://www.cnblogs.com/ywjfx/p/13460602.html
Copyright © 2011-2022 走看看