![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
scala
文章平均质量分 72
Bro_Rabbit
修猿之路
展开
-
[笔记迁移][Spark开发语言][Scala][1]基础语法
关于Scala解释器(Scala Shell)(1) cmd启动:输入scala,“scala>”(2) REPL:Read(取值)->Evaluation(求值)->Print(打印)->Loop(循环)Scala并非解释型语言,与Java一样需要编译为字节码.class,最终运行于JVM。Scala可以任意调用Java类库。计算表达式原创 2018-11-13 21:11:57 · 345 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][12]函数式编程
将函数赋值给变量(1) Scala函数是“一级元素”,可以独立定义,独立存在,而且可以直接将一个函数赋值给一个变量(2) Scala语法规定,将函数赋值给变量时,必须在函数名后面加上空格和下划线匿名函数(类似Java的Lambda表达式,Spark中将大量使用)Scala定义匿名函数的语法规则:(参数名:参数类型) => 函数体高阶函数(1) 由于函数是Scala...原创 2018-11-19 12:29:59 · 133 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][5]函数与异常
Scala与 C++ 一样,既面向过程(独立存在的函数),又面向对象(类,域,方法)Scala函数定义(1) 定义范式 def functionName(arg1Name : arg1Type, arg2Name : arg2Type) = {/*Function Body*/}[1] 定义时,与Python一样,必须由def开头[2] Scala函数要求必须明确指定所有参数的类型...原创 2018-11-15 08:57:43 · 149 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][11]模式匹配
一、概述模式匹配,类似Java的switch-case语句。但Scala的模式匹配除了可以对值进行匹配之外,还可以对类型进行匹配,对Array和List的元素进行匹配,对case class(即样例类)进行匹配,甚至对有无值(Option)进行匹配二、基础语法定义方式:四个要素变量 match {case 值 => …}如果值为下划线_,则代表不满足以上所有情况的默认...原创 2018-11-19 10:47:56 · 132 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][10]面向对象——类型参数
Scala类型参数与Java的泛型参数的概念一致泛型类(1) 定义:在类名的后面跟上类型参数列表,用[]包裹(2) 案例(3) Scala可以根据第一字段类型自动推断泛型类型泛型参数(1) 定义:在方法名后跟上类型参数列表,用[]包裹(2) 案例(3) 泛型函数一样可以自动推断类型上边界Bounds(1) 类似Java的<T extends xxx&g...原创 2018-11-16 11:52:29 · 118 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][9]隐式转换与隐式参数
一、概述其功效类似于SpringMVC中DataBind中调用的ConversionService(Converters)最核心的任务是定义隐式转换函数(函数!!!函数!!!),即implicit conversion function定义的隐式转换函数,只要在程序内引入,就会被Scala自动使用。当程序中使用到隐式转换函数所接收的参数类型的对象时,Scala会自动将其传入隐式转换函数,...原创 2018-11-16 11:04:29 · 591 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][7]面向对象——Trait基础
一、Trait基础将Trait作为接口使用(1) 与Java的接口Interface相似。(2) 但Scala中没有implements关键字,无论继承class还是trait,统一使用关键字extends(3) Scala不支持对class的多重继承,但支持对trait的多重继承。从第二个trait开始需要使用关键字with在Trait中定义具体方法(1) Trait中还可...原创 2018-11-16 09:59:34 · 123 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][6]面向对象
一、 类方法与函数的定义一样,需要使用"=",对于“不需要返回”的方法,可以直接省略"="(隐式返回Unit的过程)。没有参数且只有一条语句的方法可以省略参数列表定界()和方法体定界{}。定义时没有括号的无参方法在外部调用时也不能加括号。域: getter与setter的规则(1) 每个字段必须在定义时指定默认初始化值(2) 定义时未使用pri原创 2018-11-16 08:50:28 · 223 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][4]数据结构——Map与Tuple
一、 Map创建Map(key -> value)(1) 不可变Map(默认伴生对象) (2) 可变Map(3) 另一种创建方式(4) 空HashMap获取指定key对应的value注意:Scala中,若Map中没有指定key对应的value则会报错,解决办法:[1] 获取之前先用Map.contains()检查[2] 使用Map.getOrElse()...原创 2018-11-14 20:05:17 · 1406 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][3]数据结构——Array与ArrayBuffer
Scala中的Array代表的含义与Java中一致,即长度不可变的数组。(1) 创建数组 val arr = new Array[Type](num) (2) 访问元素:通过小括号而不是方括号,如a(0), a(1)=1Scala中的ArrayBuffer相当于Java的集合线性表ArrayList(1) 创建ArrayBuffer var arrayBuf = Ar...原创 2018-11-14 17:01:13 · 776 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][2]流程控制
条件语句(1) 结构上与Java的if-else一致(2) Scala if-else可以返回"值",类似于Java的三元运算符。当然,若在if-else的最后一句进行赋值操作,由于赋值操作本身"没有返回值"(返回Unit),因此if-else"没有返回值"(返回Unit)注意:[1] 当if子句和else子句返回的类型不同时,Scala将自动判断,取两个类型的公共父类型作为返回值类...原创 2018-11-14 15:31:55 · 137 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][13]多线程——Actor(了解)
Spark2.x的源码中,已经不在使用Actor进行消息通信,取而代之的是 RPCEndPoint,但用法、作用却是极为相似的 了解RPC/** * An end point for the RPC that defines what functions to trigger given a message. * * It is guaranteed that `onStart`, `re...原创 2018-11-28 14:48:13 · 293 阅读 · 0 评论