
Scala
少说废话多干活
寻找巨人,并站在他们的肩膀上
找回男人的自信
展开
-
Scala --- 隐式转换和隐式参数
隐式转换: 定义:它可以允许你手动指定,将某种类型的对象转换成其他类型的对象或者是给一个类增加方法 即定义一个使用 “implicit”关键字修饰的方法 实现把一个原始类转换成目标类,进而可以调用目标类中的方法 隐式参数: 所谓的隐式参数,指的是在函数或者方法中,定义一个用implicit修饰的参数,此时Scala会尝试找到一个指定类型的用implicit修饰的参数,即隐式值,并注入...原创 2019-12-04 22:06:28 · 175 阅读 · 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 · 149 阅读 · 0 评论 -
scala --- 上下界
在指定泛型类型时,有时需要界定泛型类型的范围,而不是接收任意类型 ; 比如,要求某个泛型类型,必须是某个类的子类,这样在程序中就可以放心的调用父类的方法,程序才能正常的使用与运行 scala的上下边界特性允许泛型类型是某个类的子类,或者是某个类的父类 U >: T 下界的定义 , 即U必须是类型T的父类或者是自己本身。 U <: T...原创 2019-12-04 18:12:19 · 235 阅读 · 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 · 200 阅读 · 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 · 187 阅读 · 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 · 139 阅读 · 0 评论 -
Scala --- 模式匹配和样例类
Scala的模式匹配机制,可以应用到很多场合: switch语句 类型查询 以及快速获取数据 scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配 匹配字符串: //todo:匹配字符串 , 类似 switch object CaseDemo01 extends App{ //定义一个数组 val arr=Array("hadoop"...原创 2019-12-04 17:07:27 · 261 阅读 · 0 评论 -
Scala --- 面向对象编程之trait特质
介绍: trait特质 是 Scala中代码复用的基础单元 (相当于java的接口) 作用:他可以将方法和字段定义封装起来,然后添加到类中 与类的区别:每个类只能继承一个超类,而一个类可以添加任意数量的特质 ; 使用方法: 使用extends 来继承trait ; 如果要继承多个trait,则使用with关键字 ...原创 2019-12-04 16:06:24 · 167 阅读 · 0 评论 -
Scala --- 面向对象编程之继承
scala和Java一样,使用extends关键字来实现继承 eg1:实现简单继承 class Person1 { var name = "super" def getName = this.name } class Student1 extends Person1 object Main1 { def main(args: Array[String]): Unit =...原创 2019-12-04 14:17:16 · 234 阅读 · 0 评论 -
大数据 -- Scala:面向对象编程之对象
Scala中的object: Scala是没有java中的静态成员的 。如果需要用到static变量、static 方法,就要用到Scala的单例对象object 。 注意: 使用object定义一个单例对象,可以用object作为工具类或存放常量 //单例对象只能有一个无参的主构造器,不能添加其他参数 object DateUtils { //在object中定义的成员变量,相...原创 2019-12-04 13:04:17 · 110 阅读 · 0 评论 -
大数据 -- Scala:面向对象编程之类
类的定义: package com import java.util.Date class Customer { // _ 表示使用默认值进行初始化 ; //String -- null , Int -- 0 , Boolean -- false //val变量不能使用_来初始化 var name:String = _ var sex:String = _ ...原创 2019-12-03 20:01:18 · 105 阅读 · 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*10 func: Int => Int...原创 2019-12-03 19:33:09 · 176 阅读 · 0 评论 -
大数据 -- Scala : 函数式编程
1、函数式编程 介绍: 函数:函数即Function,是从集合A到集合B的一种映射关系。如果集合A中的每一个元素都对应到集合B中的某一个元素,那么这种映射关系就叫做函数。 我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程 遍历 foreach 方法描述:foreach(f: (A) ⇒ Unit): Unit 方法说明: foreach API ...原创 2019-12-03 18:54:44 · 248 阅读 · 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 · 489 阅读 · 0 评论