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 · 132 阅读 · 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 · 131 阅读 · 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)=1 Scala中的ArrayBuffer相当于Java的集合线性表ArrayList (1) 创建ArrayBuffer var arrayBuf = Ar...原创 2018-11-14 17:01:13 · 775 阅读 · 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 评论