Scala
文章平均质量分 95
Scala
丶kino丶
学习笔记已转移到GitHub: https://github.com/KinoMin/bigdata-learning-notes
展开
-
scala 模式匹配 match
文章目录一、match 基本介绍二、match 的细节和注意事项三、模式匹配之条件守卫四、模式匹配之变量匹配、常量匹配五、模式匹配之类型匹配一、match 基本介绍scala 中的模式匹配类似于 Java 中的 switch 语法, 但是更加强大;模式匹配语法中, 采用 match 关键字声明, 每个分支采用 case 关键字进行声明, 当需要匹配时,会从第一个 case 分支开始, 如果...原创 2019-12-04 17:50:03 · 601 阅读 · 0 评论 -
scala 隐式转换详解
一、scala 隐式转换引出隐式转换的引出,先看一段代码//隐式转换的引出代码val num: Int = 3.5// Double 无法转成 Int -> 高精度 无法自动转为 低精度println(s"num: ${num}")概念隐式转换: 以 implicit 关键字声明的, 带有单个参数的函数,这种函数 将会自动应用, 将值从一种类型转为另一种类型;用隐式转换的概...原创 2019-12-04 17:50:15 · 799 阅读 · 0 评论 -
scala 的排序
排序的本质, 就是比较元素的大小数字类型的可以直接进行比较, 对象类型的, 需要自定义比较规则Java 中对对象进行排序, 需要继承/实现 Comparable、comparator, 重写对应方法scala 的排序支持 3 中算子:sortedsortBysortWithsortedsorted: 对 List<对象> 进行 sorted 的第一种写法实现过程...原创 2019-12-04 17:50:38 · 713 阅读 · 0 评论 -
scala 集合的 map 映射、高阶函数使用、集合的压平、 集合的过滤、集合的简化、集合的折叠、集合的扫描、集合的拉链、集合的迭代器、集合的分组
文章目录一、map 映射: list.map(fun)二、高阶函数的使用三、集合的压平:list.flatMap(fun)四、集合的过滤: list.filter(fun)五、简化:`list.reduceLeft(fun)` `list.reduceRight(fun)` `list.reduce(fun)`四、折叠: `list.foldLeft(fun) 等价 /:` `list.LeftR...原创 2019-12-04 17:50:48 · 432 阅读 · 0 评论 -
scala 常用API及示例代码
一、数组的常用操作定长数组操作说明:+在数组的最右边增加元素+:在数组的最左边增加元素++拼接两个数组,并返回一个新的数组++=拼接两个数组mkString(str)将数组转成字符,按照 指定的 “str” 进行拼接length/size获取数组的大小(长度)sum求数组元素的总和(仅对数值型数组有效)head获取第...原创 2019-12-04 17:50:55 · 426 阅读 · 0 评论 -
scala 数组的使用及示例代码
在 scala 中, 数组分为定长数组和可变数组一、定长数组:声明方式:① new Array[Type](length):声明一个指定类型,指定长度的空数组② val array: Array[Int] = Array(1,2,3):通过初始化元素的个数来直接确定数组的长度实例/** * 数组: * 定长数组: 一旦声明长度, 不可更改 * * ...原创 2019-12-04 17:51:09 · 481 阅读 · 0 评论 -
scala 给类取别名
顺嘴提一句scala 在导入包的时候,也可以给指定的类取别名,例如import java.util.{ArrayList => JAL}使用的时候,用 定义好的名字 JAL 即可,例如new JAL[String]()以上为导包时, 给指定类取别名,下面回归正题在工作的时候取名字总是一件让人头大的事情,有时候取的类名名字实在是过长,使用的时候很麻烦,这个时候就用到了 给类...原创 2019-12-04 17:51:35 · 1279 阅读 · 0 评论 -
scala 的 trait
Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。与接口不同的是,它还可以定义属性和方法的实现。一般情况下Scala的类只能够继承单一父类,但是如果是 Trait(特征) 的话就可以继承多个,从结果来看就是实现了多重继承。Trait(特征) 定义的方式与类类似,但它使用的关键字是 trait,如下所示:object TraitDemo { def ...原创 2019-12-04 17:51:42 · 178 阅读 · 0 评论 -
scala 包声明和包导入
package com.kino.scala.day03.work.pack// 和 Java 一样, 可以在顶部使用 import 导入, 在这个文件中的所有类都可以使用//import java.util.ArrayList//import java.util.List//import java.util._//import java.util.{ArrayList => ...原创 2019-12-04 17:51:50 · 844 阅读 · 0 评论 -
scala类和对象
总结:scala 也支持构造函数的重载其它的构造函数应该使用 def this(参数列表){} 定义scala 构造函数分为两种:① 主构造函数只能有一个它的入参, 会自动的成为类的属性② 辅构造函数可以有多个(构造器的重载)首航必须是调用主构造函数它的形参仅仅是一个普通的局部常量辅构造函数调用其他辅构造函数时, 只能后声明的调用先声明的package...原创 2019-12-04 17:52:00 · 202 阅读 · 0 评论 -
scala 值调用、名调用和控制抽象
scala 拥有两种参数传递的方式:按值传递 与 按名传递。按值传递 避免了参数的重复求值,效率相对较高;而 按名传递 避免了在函数调用时刻的参数求值,而将求值推延至实际调用点,但有可能造成重复的表达式求值。值传递def main(args: Array[String]): Unit = { def f: () => Int = () => { pri...原创 2019-12-04 17:52:15 · 341 阅读 · 0 评论 -
scala 闭包和柯里化
文章目录一、闭包:函数式编程的标配一、闭包:函数式编程的标配从 Java 问题引申闭包在 Java 中,匿名函数不能访问外部变量public static void main(String[] args) { int i = 10; Thread t1 = new Thread() { @Override public void run() ...原创 2019-12-04 17:52:25 · 541 阅读 · 0 评论 -
scala 高阶函数(高阶算子)
定义:参数为函数的函数称为高阶函数① 在 scala 中, 函数是一等公民,函数可以 像对象一样进行传递、函数可以赋值给变量函数赋值给变量例子:def main(args: Array[String]): Unit = { // 调用 foo 函数, 将 foo 的返回值给 f, foo 的返回值为 Unit, 所以 f 也是 Unit //val f = foo ...原创 2019-12-04 17:52:33 · 445 阅读 · 0 评论 -
scala 流程控制
文章目录一、 分支控制 if-else二、嵌套分支三、Switch 分支结构四、For循环控制4.1 范围数据循环方式 n `to` m4.2 范围数据循环方式 n `until ` m4.3 循环守卫4.4 循环步长4.5 嵌套循环4.6 引入变量4.7 循环返回值五、While循环控制六、do..while循环控制七、多重循环控制八、While循环中断一、 分支控制 if-else和 Ja...原创 2019-12-04 17:52:40 · 282 阅读 · 0 评论 -
scala 变量和数据类型
文章目录一、注释二、标识符的命令规范三、 Scala关键字(39个)四、变量五、键盘输入六、数据类型关系七、数据类型八、类型转换一、注释和 Java 的三种注释一样// ① /*② *//** * ③ */二、标识符的命令规范Scala中的标识符声明,基本和Java是一致的,但是细节上会有所变化,有以下四种规以字母或者下划线开头,后接字母、数字、下划线以操作...原创 2019-12-04 17:52:48 · 243 阅读 · 0 评论 -
scala 部分应用函数与偏函数
文章目录一、部分应用函数二、偏函数一、部分应用函数部分应用函数: 是指一个函数有N个参数, 而我们为其提供少于N个参数, 那就得到了一个部分应用函数.def sum(a:Int,b:Int,c:Int) = a + b + c; 那么就可以从这个函数衍生出一个偏函数是这样的:def p_sum = sum(1, _:Int, _:Int)于是就可以这样调用p_sum(2,3), ...原创 2019-12-04 17:49:38 · 225 阅读 · 0 评论