![](https://img-blog.csdnimg.cn/722d48a2e4e2467dbe563f33190a73ff.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Scala
Scala相关
AokCap
这个作者很懒,什么都没留下…
展开
-
Scala逆变和协变
负号:逆变,方法的输入 正号:协边,方法的输出 package cn._51doit.scala.day06.keli trait Function1[-A,+B] { def trans(a:A):B } object Function1Test{ def main(args: Array[String]): Unit = { var f = new Function1[Int,String] { override def trans(a:原创 2020-08-03 17:34:24 · 92 阅读 · 0 评论 -
Scala之柯里化方法(结合隐式参数)
代码演示 (一) implicit可以传入一个隐式参数ra,所以下面调用方法时只用传入一个参数 package cn._51doit.scala.day06.keli object KeLiDemo2 { def main(args: Array[String]): Unit = { def m1(x:Int)(implicit y:Int) :Int ={ x+y } implicit var ra = 11 val res = m1(2)原创 2020-08-03 17:12:47 · 259 阅读 · 0 评论 -
Scala柯里化方法(代码演示)
柯里化:把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数 简单代码演示: object KeLiDemo{ def main(args: Array[String]): Unit = { //普通方法 def meth(x:Int,y:Int):Int={ x+y } //柯里化方法, 参数用多个括号括起来 def methKeLi(x:Int)(y:Int) : Int ={ x + y }原创 2020-08-03 16:10:04 · 177 阅读 · 0 评论 -
Scala泛型(五) 柯里化实现界定的功能
即不使用视图界定,也不使用上下文界定,但是要实现跟视图界定和上下文界定一样的功能,使用柯里化 视图界定:隐式转换函数或方法 下文界定:隐射转换类型(参数) package cn._51doit.scala.day05 class Pair5[T] { //使用柯里化,实现类似视图界定的功能 def bigger(first: T, second: T)(implicit f: T => Ordered[T]): T = { if (first >= second) first原创 2020-08-01 23:51:01 · 84 阅读 · 0 评论 -
Scala泛型(四) 上下文界定与隐式转换
context bound:上下文界定,就是实现隐式转换 上下文界定需要传入一个隐式类型参数 package cn._51doit.scala.day05 class Pair4[T: Ordering] { def bigger(first: T, second: T): T = { val ord: Ordering[T] = implicitly[Ordering[T]] if (ord.gteq(first, second)) first else second } }原创 2020-08-01 23:41:45 · 185 阅读 · 0 评论 -
Scala泛型(三)隐式转换与视图界定
视图界定就是跟隐式转换结合使用的,需要传入隐式转换方法或隐式转换函数 package cn._51doit.scala.day05 class Pair3[T <% Ordered[T]] { def choose(first: T,second: T): T = { if(first >= second) first else second } } object Pair3 { def main(args: Array[String]): Unit = {原创 2020-08-01 23:31:18 · 88 阅读 · 0 评论 -
Scala泛型(二) Ordering Ordered
Scala中用于比较的两个类:Ordered、Ordering Ordered 实现了java.lang.Comparable接口,对Comparable进行了扩展,更灵活,用气量更方便 Ordering 实现了java的 Comparator接口,同时对Comparator进行了扩展 class Pair2[T <: Ordered[T]] { def select(first: T,second: T): T = { if(first >= second) first else原创 2020-08-01 23:22:58 · 250 阅读 · 0 评论 -
scalca泛型(一)
[T <: Comparable[T]] 上界 upper bound java: [T >: Comparable[T]] 下界 lower bound java: [T <% Comparable] 视图界定 view bound 跟隐式转换有关的 [T : Comparable] 上下文界定 context bound 跟隐式转换有关的 [-T] 逆变 方法输入参数 [+T] 协变 方法返回 package cn._51doit..原创 2020-08-01 21:44:02 · 123 阅读 · 0 评论