Scala
该专栏是学习 Scala 的过程中,对相关知识的总结。
朱古力...
这个作者很懒,什么都没留下…
展开
-
15 Scala 泛型、上下界、视图界定、上下文界定
泛型、上下界、视图界定、上下文界定文章目录泛型、上下界、视图界定、上下文界定1. 泛型1.1 基本介绍1.2 案例2. 上下界2.1 上界的介绍和使用2.2 下界的介绍和使用3. 视图界定4. 上下文界定5. 协变、逆变和不变1. 泛型1.1 基本介绍如果我们要求函数的参数可以接受任意类型。可以使用泛型,这个类型可以代表任意的数据类型。例如 List,在创建 List 时,可以传入整型、字符串、浮点数等等任意类型。那是因为 List 在类定义时引用了泛型。比如在 Java 中:public in原创 2020-05-25 15:06:15 · 383 阅读 · 0 评论 -
14 Scala 实现客户信息管理系统
客户信息管理系统文章目录客户信息管理系统1. AppStart2. CustomerView3. CustomerService4. Customer1. AppStartpackage com.guli.chapter15.appimport com.guli.chapter15.customerView.CustomerViewobject AppStart { def main(args: Array[String]): Unit = { (new CustomerView)原创 2020-05-25 15:00:48 · 3003 阅读 · 1 评论 -
13 Scala 函数式编程高级
函数式编程高级文章目录函数式编程高级1. 偏函数1.1 快速入门1.2 小结1.3 偏函数的简写形式2. 作为参数的函数2.1 基本介绍2.2 案例3. 匿名函数3.1 基本介绍3.2 案例4. 高阶函数4.1 基本介绍4.2 基本使用4.3 高阶函数可以返回函数类型5. 参数类型推断5.1 基本介绍5.2 参数类型推断写法说明5.3 案例6. 闭包6.1 基本介绍6.2 案例7. 函数柯里化7.1 基本介绍7.2 案例8. 控制抽象8.1 基本介绍1. 偏函数1.1 快速入门val list =原创 2020-05-25 14:57:09 · 631 阅读 · 0 评论 -
12 Scala 模式匹配
模式匹配文章目录模式匹配1. match1.1 基本介绍1.2 案例1.3 match 的细节和注意事项2. 守卫2.1 基本介绍2.2 案例3. 模式中的变量3.1 基本介绍3.2 案例4. 类型匹配4.1 基本介绍4.2 案例5. 匹配数组5.1 基本介绍5.2 案例6. 匹配列表7. 匹配元组8. 对象匹配8.1 基本介绍8.2 案例18.3 案例29. 变量声明中的模式9.1 基本介绍9.2 案例10. for 表达式中的模式10.1 基本介绍10.2 案例11. 样例类11.1 快速入门11.2原创 2020-05-25 14:41:00 · 208 阅读 · 0 评论 -
11 Scala 数据结构(下)-集合操作
数据结构(下)-集合操作文章目录数据结构(下)-集合操作1. 集合元素的映射:map 映射操作1.1 map 映射操作1.2 案例1.3 flatmap 映射2. 集合元素的过滤:filter3. 化简4. 折叠5. 扫描6. 拉链7. 迭代器8. 流 Stream8.1 基本说明8.2 创建 Stream 对象8.3 案例9. 视图 View9.1 基本介绍9.2 案例10. 并行集合11. 操作符1. 集合元素的映射:map 映射操作1.1 map 映射操作通过 map 映射操作可以解决:将原创 2020-05-25 12:05:29 · 272 阅读 · 0 评论 -
10 Scala 数据结构(上)-集合
数据结构(上)-集合文章目录数据结构(上)-集合1. Scala 集合基本介绍2. 不可变集合继承层次一览图3. 可变集合继承层次一览图4. 定长数组4.1 定义数组5. 变长数组5.1 用法5.2 小结5.3 定长数组与变长数组的转换5.4 多维数组6. Scala 数组与 Java 的 List 的互转6.1 Scala 数组转 Java 的 List6.2 Java 的 List 转 Scala 数组7. 元组 Tuple7.1 基本介绍7.2 元组的创建7.3 元组数据的访问7.4 元组数据的遍历原创 2020-05-25 10:01:57 · 698 阅读 · 1 评论 -
09 Scala 隐式转换和隐式值
隐式转换和隐式值1. 隐式转换1.1 隐式函数基本介绍隐式转换函数是以 implicit 关键字声明的带有单个参数的函数。这种函数会自动应用,将值从一种类型转换为另一种类型。1.2 快速入门object ImplicitDemo01 { def main(args: Array[String]): Unit = { //编写一个隐式函数转成 Double->Int 转换 //隐式函数应当在作用域才能生效 implicit def f1(d:Double原创 2020-05-25 09:22:57 · 173 阅读 · 0 评论 -
08 Scala 面向对象编程(高级特性)
面向对象的编程(高级特性)1. 静态属性和静态方法1.1 基本介绍scala 语言是完全面向对象的语言,所以并没有静态的操作(即在 Scala 中没有静态的概念)。但是为了能够和 Java 语言交互(因为 Java 中有静态概念),就产生了一种特殊的对象来模拟类对象,我们称之为类的伴生对象。这个类的所有静态内容都可以放置在它的伴生对象中声明和调用。1.1 class Person 称为伴生类,将非静态的内容写到该类中。1.2 object Person 称为伴生对象,将静态的内容写入到该对象中。原创 2020-05-25 09:13:59 · 548 阅读 · 0 评论 -
07 Scala 面向对象编程(中级部分)
文章目录面向对象编程(中级部分)1. 包1.1 Scala 包的特点概述1.2 Scala 自动引入的常用包1.3 Scala 包注意事项和使用细节1.4 包对象2. 包的可见性问题3. 包的引入4. 封装5. 继承5.1 基本语法5.2 重写方法5.3 Scala 中类型检查和转换5.4 Scala 中超类的构造5.5 覆写字段5.6 抽象类5.7 匿名子类面向对象编程(中级部分)1. 包1.1 Scala 包的特点概述区分相同名字的类。当类很多时,可以很好的管理类。控制访问范围。原创 2020-05-24 17:27:23 · 231 阅读 · 0 评论 -
06 Scala 面向对象编程(基础部分)
文章目录面向对象编程(基础部分)1. 类与对象1.1 定义类1.2 属性/成员变量1.3 创建对象2. 方法3. 构造器3.1 介绍3.2 构造器的基本语法3.3 构造器的注意事项和细节4. 属性高级4.1 构造器参数4.2 Bean 属性4.3 对象创建的流程分析面向对象编程(基础部分)1. 类与对象1.1 定义类基本语法[修饰符] class 类名 { 类体}scala 中,类并不声明为 public ,所有这些类都具有公有可见性。一个 scala 源文件可以包含多个类原创 2020-05-24 17:26:41 · 471 阅读 · 0 评论 -
05 Scala 函数式编程基础
文章目录函数式编程的基础1. 函数的定义2. 函数注意事项和细节讨论3. 过程4. 惰性函数5. 异常5.1 介绍5.2 小结函数式编程的基础1. 函数的定义基本语法def 函数名([参数名:参数类型], ...)[[: 返回值类型]=] { 语句... return 返回值}1.1 返回值形式1:: 返回值类型 = 。1.2 返回值形式2:= ,表示返回值类型不确定,使用类型推导完成。1.3 返回值形式3: ,表示没有返回值,return 不生效。1.4 如果没有 re原创 2020-05-24 17:25:43 · 223 阅读 · 0 评论 -
04 Scala 程序流程控制
文章目录程序流程控制1. 分支控制 if - else 注意事项2. for 循环控制2.1 范围数据循环方式12.2 范围数据循环方式22.3 循环守卫2.4 引入变量2.5 嵌套循环2.6 循环返回值2.7 步长控制2.8 循环中断程序流程控制1. 分支控制 if - else 注意事项Scala 中任何表达式都是有返回值的,也就意味着 if else 表达式其实是有返回值的,具体返回结果的值取决于满足条件的代码体的最后一行内容。2. for 循环控制2.1 范围数据循环方式1基本语原创 2020-05-24 17:24:43 · 96 阅读 · 0 评论 -
03 Scala 运算符
运算符1. 算数运算符Scala 中没有 ++, -- 操作符,需要通过 +=, -= 来实现同样效果。2. 关系运算符如果两个浮点数进行比较,应当保证数据类型一致。3. 三目运算符Scala 不支持三目运算符,在 Scala 中使用 if else 的方式实现。...原创 2020-05-24 17:23:44 · 273 阅读 · 0 评论 -
02 Scala 变量的基本介绍
文章目录变量1. 变量使用说明2. 数据类型3. 值类型隐式转换4. 值类型与 String 类型的转换4.1 基本类型转 String 类型4.2 String 类型转基本类型变量1. 变量使用说明scala 要求变量声明时初始化。声明变量时,类型可以省略(编译器会自动进行类型推导)。类型确定后,就不可以再修改了(Scala 是强数据类型语言)。在声明/定义一个变量时,可以使用 var 或者 val 来修饰, var 修饰的变量可改变,val 修饰的变量不可改。val 没有线程安全问题,因原创 2020-05-24 12:18:44 · 126 阅读 · 0 评论 -
01 Scala概述
文章目录Scala 概述1. 快速入门1.1 Scala 程序反编译:说明 Scala 程序的执行流程Scala 概述1. 快速入门1.1 Scala 程序反编译:说明 Scala 程序的执行流程object 在底层会生成两个类 Hello,Hello$;Hello 中有个 main 函数,调用 Hello$ 类中的一个静态对象 MODULES$;Hello$.MODULE$ 对象是静态的,通过该对象调用 Hello$的 main 函数;可以理解在 main 中写的代码在放在原创 2020-05-24 12:17:16 · 146 阅读 · 0 评论