![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Scala
少说废话多干活
寻找巨人,并站在他们的肩膀上
找回男人的自信
展开
-
Scala --- 隐式转换和隐式参数
隐式转换:定义:它可以允许你手动指定,将某种类型的对象转换成其他类型的对象或者是给一个类增加方法 即定义一个使用 “implicit”关键字修饰的方法 实现把一个原始类转换成目标类,进而可以调用目标类中的方法隐式参数:所谓的隐式参数,指的是在函数或者方法中,定义一个用implicit修饰的参数,此时Scala会尝试找到一个指定类型的用implicit修饰的参数,即隐式值,并注入...原创 2019-12-04 22:06:28 · 126 阅读 · 0 评论 -
Scala --- 协变、逆变、非变
class Pair[T](a:T)object Pair { def main(args: Array[String]): Unit = { val p1 = new Pair("hello") // 编译报错,无法将p1转换为p2 val p2:Pair[AnyRef] = p1 println(p2) }}协变:class Temp2[...原创 2019-12-04 21:30:42 · 118 阅读 · 0 评论 -
scala --- 上下界
在指定泛型类型时,有时需要界定泛型类型的范围,而不是接收任意类型 ; 比如,要求某个泛型类型,必须是某个类的子类,这样在程序中就可以放心的调用父类的方法,程序才能正常的使用与运行 scala的上下边界特性允许泛型类型是某个类的子类,或者是某个类的父类 U >: T 下界的定义 , 即U必须是类型T的父类或者是自己本身。 U <: T...原创 2019-12-04 18:12:19 · 174 阅读 · 0 评论 -
Scala --- 泛型
scala和Java一样,类和特质、方法都可以支持泛型scala> val list1:List[String] = List("1", "2", "3")list1: List[String] = List(1, 2, 3)在scala中,使用方括号来定义类型参数 List[String]定义一个泛型方法 def getMiddle[A](arr:Array...原创 2019-12-04 18:02:20 · 140 阅读 · 0 评论 -
Scala --- 提取器Extractor
定义:从传递给它的对象中提取出构造该对象的参数 (类似 样例类进行模式匹配提取参数 ) case SubmitTask(id, name) => println(s"id=$id, name=$name"原理:Scala提取器是一个带有unapply方法的对象 ;unapply方法算是apply方法的反向操作 ;class Student { ...原创 2019-12-04 17:50:52 · 148 阅读 · 0 评论 -
Scala --- 异常处理
举例:object ExcepionTest1 { def main(args: Array[String]): Unit = { val i = 10/0; println(i) }}//输出:Exception in thread "main" java.lang.ArithmeticException: / by zero at com.excep...原创 2019-12-04 17:24:49 · 93 阅读 · 0 评论 -
Scala --- 模式匹配和样例类
Scala的模式匹配机制,可以应用到很多场合: switch语句 类型查询 以及快速获取数据 scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配匹配字符串://todo:匹配字符串 , 类似 switchobject CaseDemo01 extends App{ //定义一个数组 val arr=Array("hadoop"...原创 2019-12-04 17:07:27 · 197 阅读 · 0 评论 -
Scala --- 面向对象编程之trait特质
介绍:trait特质 是 Scala中代码复用的基础单元 (相当于java的接口) 作用:他可以将方法和字段定义封装起来,然后添加到类中 与类的区别:每个类只能继承一个超类,而一个类可以添加任意数量的特质 ; 使用方法: 使用extends 来继承trait ; 如果要继承多个trait,则使用with关键字 ...原创 2019-12-04 16:06:24 · 133 阅读 · 0 评论 -
Scala --- 面向对象编程之继承
scala和Java一样,使用extends关键字来实现继承eg1:实现简单继承class Person1 { var name = "super" def getName = this.name}class Student1 extends Person1object Main1 { def main(args: Array[String]): Unit =...原创 2019-12-04 14:17:16 · 171 阅读 · 0 评论 -
大数据 -- Scala:面向对象编程之对象
Scala中的object:Scala是没有java中的静态成员的 。如果需要用到static变量、static 方法,就要用到Scala的单例对象object 。注意:使用object定义一个单例对象,可以用object作为工具类或存放常量//单例对象只能有一个无参的主构造器,不能添加其他参数object DateUtils { //在object中定义的成员变量,相...原创 2019-12-04 13:04:17 · 84 阅读 · 0 评论 -
大数据 -- Scala:面向对象编程之类
类的定义:package comimport java.util.Dateclass Customer { // _ 表示使用默认值进行初始化 ; //String -- null , Int -- 0 , Boolean -- false //val变量不能使用_来初始化 var name:String = _ var sex:String = _...原创 2019-12-03 20:01:18 · 78 阅读 · 0 评论 -
大数据 -- Scala:高阶函数
定义:使用函数值作为参数,或者返回值为函数值的 “函数”和“方法”函数值作为参数://定义一个数组scala> val array=Array(1,2,3,4,5)array: Array[Int] = Array(1, 2, 3, 4, 5)//定义一个函数scala> val func=(x:Int)=>x*10func: Int => Int...原创 2019-12-03 19:33:09 · 135 阅读 · 0 评论 -
大数据 -- Scala : 函数式编程
1、函数式编程介绍:函数:函数即Function,是从集合A到集合B的一种映射关系。如果集合A中的每一个元素都对应到集合B中的某一个元素,那么这种映射关系就叫做函数。我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程遍历 foreach方法描述:foreach(f: (A) ⇒ Unit): Unit方法说明:foreach API ...原创 2019-12-03 18:54:44 · 202 阅读 · 0 评论 -
大数据 -- Scala集合:Map、Set、List
1、映射Map定义:Map可以称之为映射。它是由键值对组成的集合。scala当中的Map集合与java当中的Map类似,也是key,value对形式的。在scala中,Map也分为不可变Map和可变 Map。不可变map:语法:val/var map = Map(键->值, 键->值, 键->值...) // 推荐,可读性更好val/var...原创 2019-12-03 15:23:32 · 398 阅读 · 0 评论