Scala学习笔记--视图界定
来源:互联网 发布:mac os 比win8温度高 编辑:程序博客网 时间:2024/05/16 00:37
1> 泛型类
1. 定义形式
class Pair[T,S](val first : T, val second : S)
T,S是类型的参数
2. Scala会从构造参数推断出实际类型
Val p = new Pair(42,”String”) //Pair[Int,String]
你也可以自己指定类型
Val p2 = new PairAny,Any
2> 泛型函数
1. 在函数名的后面需要把类型的参数加上
def getMiddle[T](a : Array[T]) = a(a.length / 2)
例如:
getMiddle(Array(“Mary”,”had”,”a”,”little”,”lamb”)) //将会调用getMiddle[String]
3>类型变量界定
1.如下代码就可以将声明两个组件类型相同
Class Pair[T](val first : T, val second : T)
2. 这是一个比较大小的代码
<: 设置了上界的类型,表面T必然是Comparable的子类,而要比较不同T类型的值的大小,就需要调用Comparable下面的 compareTo()方法,最后打印的结果是:Spark,因为是根据字典的排序顺序的。
- 如果我们想比较数字的话,就不可以用上面的方法了,因为类型不匹 配。
<% 可以将T 隐身转换车成Comparable[T]
<% 叫 视图界定 把T类型的实例转换成Comparable[T]类型,如果T类型的实例不是Comparable[T]的子类,利用视图界定的形式就可以把T类型,隐式转换
例如: 视图界定 把 Int 转换成 RichInt 而RichInt 是Comparatable[T]的子类,
所以就可以调用compareTo()
4.Ordered
如果想用 > ,<, == 来比较大小的话,可以用如下代码
但是对于String类型来说,需要通过视图界定把String类型,转换成RichString,而RichString是Ordered[String],>,<,==这些操作就可以通过Ordered[String]实现。
问题:为啥不可以Int不可以直接用comparable[T]类型,因为,Int 不是comparable[Int]的子类,可以通过视图界定,将Int隐式转换成RichInt,而RichInt实现了Comparable[Int]。
1 0
- Scala学习笔记--视图界定
- scala进阶3-视图界定view bounds
- scala学习笔记1-泛型、界定、形变、this.type、复合类型、抽象类型
- scala类型系统:12) view bounds-视图界定
- Scala隐式转换——视图界定
- 第47讲:Scala多重界定代码实战及其在Spark中的应用源码解析学习笔记
- Scala 多重界定
- scala学习之:scala多重界定代码实战及其在Spark中的应用
- 第62讲:Scala中上下文界定内幕中的隐式参数与隐式参数的实战详解及其在Spark中的应用源码解析学习笔记
- Scala 类型参数的界定
- scala进阶6-多重界定
- Scala-类型参数和界定
- scala进阶2-类型变量界定Bounds
- scala进阶4-上下文界定(Context)
- Scala学习笔记1
- Scala学习笔记2
- scala语言学习笔记
- Scala学习笔记
- js javascript:void(0) 真正含义
- 平衡二叉树汇总
- [持续更新]HTML5学习笔记(二)
- Unity 3D 存档实现
- AutoLabelUI 点击列表每一个item动态添加标签
- Scala学习笔记--视图界定
- AppManager-for-Android App应用管理
- 提取nginx日志5分钟内的访问状态
- 安装CM时yum repolist报错,跪求大神来解答
- QT获取系统当前时间
- sublime text学习 - Sublime中的Snippet编写
- Collage 相册随机展示相片特效
- 隐藏tabbar
- php环境搭建教程(phpstrom+xampp)--如何修改apache端口号