
Scala编程
lightupworld
这个作者很懒,什么都没留下…
展开
-
Scala编程——第12章:隐式转换和隐式参数
隐式转换和隐式参数一、隐式转换1.基本概念①应用案例②源码分析③细节问题2.隐式转换丰富类库功能3.引入隐式转换4.隐式转换规则二、隐式参数三、隐式类四、总结本章学习隐式转换和隐式参数,隐式转换和隐式参数是Scala两个功能强大的工具,在幕后处理那些很好有价值的工作。属于Scala高级阶段知识,初学者只需了解其用法即可,不用太过深入。一、隐式转换1.基本概念隐式转换指的是那种以implicit关键字声明的带有单个参数的函数。这样的函数将被自动应用,将一种类型转为另一种类型。①应用案例首先看一个简原创 2020-08-28 17:34:31 · 177 阅读 · 0 评论 -
Scala编程——第11章:模式匹配和样例类(下)
样例类一、样例类1.基本介绍本节学习样例类的相关知识。有关模式匹配的知识点击链接:一、样例类1.基本介绍样例类是一种特殊的类,主要用于优化模式匹配。样例类仍然是类样例类用case关键字进行声明。样例类是为模式匹配而优化的类。构造器中的每一个参数都成为val——除非它被显式地声明为var(不建议这样做)。在样例类对应的伴生对象中提供apply方法,让你不用new关键字就能构造出相应的对象。提供unapply方法让模式匹配可以工作。将自动生成toString、equals、hashCod原创 2020-08-26 17:48:38 · 228 阅读 · 0 评论 -
Scala编程——第11章:模式匹配和样例类(上)
模式匹配和样例类一、模式匹配1.基础案例2.模式守卫二、模式种类1.通配模式2.常量模式3.变量模式4.构造方法模式5.序列模式6.元组模式7.带类型的模式8.变量绑定本节学习Scala中十分强大的模式匹配机制,同时Scala提供了样例类,对模式匹配进行了优化。一、模式匹配Scala中的模式匹配类似于Java中的switch语法,但是更加强大。模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明。当需要匹配时,按照从上到下顺序匹配。会从第一个case分支开始,如果匹配成功,原创 2020-08-25 17:45:30 · 307 阅读 · 0 评论 -
Scala编程——第10章:Scala集合——映射Map(6)
第10章:Scala集合——映射(6)一、映射Map简介二、不可变映射1.创建不可变映射Map2.获取映射中值3.更新映射值4.迭代映射三、可变映射Map1.创建可变映射Map2.更新映射中的值四、排序的映射五、操作汇总1.常用可变/不可变映射操作2.不可变Map包含的操作一、映射Map简介映射Map是键/值对偶集合。映射分为不可变映射Map和可变映射Map。继关系如下图所示:不可变映射Map可变映射Map二、不可变映射1.创建不可变映射MapScala默认使用不可变M原创 2020-08-24 17:14:18 · 264 阅读 · 0 评论 -
Scala编程——第10章:Scala集合——集Set(5)
Scala集合——集Set(5)一、集Set的简介二、不可变集Set1.基本操作三、可变集Set1.基本操作2.排序的集SortedSet四、操作汇总1.可变集和不可变集常用操作2.不可变集操作3.可变集操作一、集Set的简介集Set是不重复元素的集合,和元组Tuple一样,集Set的元素可以是不同类型的(Set[Any])。集Set分成可变Set和不可变Set。Scala的API包含了基础的特质(trait),在此基础上,又提供了两个子特质,一个用于表示可变集,另一个表示不可变集。不可变原创 2020-08-21 16:14:24 · 275 阅读 · 0 评论 -
Scala编程——第10章:Scala集合——元组(4)
Scala集合——元组(4)一、元组简介二、使用元组本节主要学习元组Tuple集合的概念和相关操作。一、元组简介元组是不同类型的元素的集合,元组可以容纳不同类型的元素。元组是不可变的。元组中最多只能有22个元素。从Tuple1 到 Tuple22。二、使用元组①创建元组: 实例化新的元组,只需要将对象放在圆括号当中,用逗号隔开即可。②访问元组: 使用用英文句点、下画线和 从1开始的序号来访问每一个元素。 你也许正好奇为什么不能像访问列表元素,即"tuple(0)"那样访问元组原创 2020-08-20 16:57:38 · 279 阅读 · 0 评论 -
Scala编程——第10章:Scala集合——列表(3)
Scala集合——列表(3)一、列表简介二、不可变列表List1.构建列表2.基本操作3.初阶方法4.高阶方法本节主要学习列表集合的概念和相关操作。一、列表简介列表是Seq的子类。Seq是一个有先次序的值的序列,具有一定长度的可迭代访问的对象。列表分成 不可变列表List 和 可变列表ListBufferList中可以存放任何数据类型, 但是和数组一样,同一个列表的元素必须是相同类型的。继承关系不可变列表ListList -> LinearSeq -> Seq -> I原创 2020-08-19 19:40:45 · 814 阅读 · 0 评论 -
Scala编程——第10章:Scala集合——数组(2)
Scala集合——数组(1)一 、数组简介二、定长数组三、变长数组四、数组转换五、常用方法六、多维数组本节主要学习数组Array集合的概念和相关操作。一 、数组简介数组是Seq的子类。Seq是一个有先次序的值的序列,具有一定长度的可迭代访问的对象。数组分成不可变数组(定长数组)和可变数组(不定长数组)继承关系不可变数组:Array -> FallbackArrayBuilding -> ArraySeq -> IndexedSeq -> Seq -> Iter原创 2020-08-17 18:31:35 · 312 阅读 · 0 评论 -
Scala编程——第10章:Scala集合——集合简介(1)
Scala集合———集合简介(1)一、主要的集合特质二、 不可变集合三、可变集合四、构建集合实例五、参考资料本章将学习Scala的集合,共6小节。主要包含以下内容:1.集合简介2.数组Array3.列表List4.元组Tuple5.集Set6.映射Map本节主要学习集合的概念、集合继承关系等等。一、主要的集合特质Scala 所有集合类都可以在 scala.collection 包中找到:包中的集合分为两大类:可变集合 和 不可变的集合,下图展示了这个包中所有的集合类,这些都是高级原创 2020-08-17 11:53:24 · 286 阅读 · 0 评论 -
Scala编程——第九章:面向对象编程(高级部分)——特质
面向对象编程(高级部分)—— 特质(3)todo原创 2020-08-17 09:53:38 · 150 阅读 · 0 评论 -
Scala编程——第九章:面向对象编程(高级部分)——包
面向对象编程中级——包(3)todo原创 2020-08-17 09:46:57 · 156 阅读 · 0 评论 -
Scala编程——第九章:面向对象编程(高级部分)——类的继承
面向对象编程(高级部分)——类的继承(2)todo原创 2020-08-17 09:43:46 · 131 阅读 · 0 评论 -
Scala编程——第九章:面向对象编程(高级部分)—— Scala静态概念
面向对象编程中级——Scala静态概念一、静态概念1.单例对象2.伴生对象3.apply方法4.应用程序的对象面向对象编程中级部分,主要学习Scala中的静态概念、类的继承等相关知识。一、静态概念1.单例对象Scala比Java 更具有面向对象的特点,Scala的类不允许有静态( static )成员。Scala虽然没有静态方法或者静态字段。对此类使用场景, Scala提供Object语法(单例对象)来达到相同的目的。单例对象(singleton object) de 定义看上去和类相似,使用原创 2020-08-11 15:59:44 · 195 阅读 · 0 评论 -
Scala编程——第八章:面向对象编程(初级部分)
面向对象编程(初级部分)一、预备知识二、类与对象1.类与对象的关系2.类的定义3.属性(成员变量)4. 对象本章开始学习Scala面向对象编程内容,内容分成初级、中级、高级部分。一、预备知识Java是面向对象的编程语言,由于历史原因,Java中还存在着非面向对象的内容:基本类型 ,null,静态方法等。Scala语言来自于Java,所以天生就是面向对象的语言,而且Scala是纯粹的面向对象的语言,即在Scala中,一切皆为对象。二、类与对象1.类与对象的关系类是抽象的,概念的,代表一类事原创 2020-08-06 15:18:16 · 302 阅读 · 0 评论 -
Scala编程——第六章:Scala函数式编程高级(下)
Scala函数式编程高级(下)一、闭包二、柯里化三、尾递归四、偏函数(Partial Functions)五 、控制抽象一、闭包在Scala中,你可以在任何作用域内定义函数。如在包中、类中、甚至是另一个函数或方法中。在函数体内,你可以访问到相应作用域内的任何变量(这很正常),但是当变量不在作用的时候,函数仍然可以访问到这个变量。这样一个函数称作"闭包"。闭包由代码和代码用到的非局部变量定义构成。 闭包可以让你的函数访问非局部变量。定义一个函数字面量:val addMore = (x: Int) =原创 2020-07-31 12:25:26 · 210 阅读 · 0 评论 -
Scala编程——第六章:Scala函数式编程高级(上)
Scala函数式编程高级(上)一、作为值的函数二、函数字面量1.字面量2.函数字面量(匿名函数)3.函数字面量的简写(1)简写规则:(2)正确使用占位符三、带参数的函数四、高阶函数五、部分应用函数(Partially Applied Functions)一、作为值的函数在Scala中,函数是"头等公民",就和数字一样,你可以在变量中存放函数。import scala.math._val num = 3.14val fun = ceil _ //注意有个下划线_这段代码将num设为3.14原创 2020-07-31 10:54:02 · 375 阅读 · 0 评论 -
Scala编程——第五章:Scala函数式编程(基础)
Scala函数式编程基础(上)一、概念说明1.方法与函数2.函数式编程与面向对象编程二、函数的定义1.基本语法2.函数的调用三、过程(procedure)1.基本概念四、惰性函数五、异常六、函数字面量Scala函数式编程分成基础部分和高级部分。高级部分参考:一、概念说明1.方法与函数方法: 定义函数最常用的方式是作为某个对象的成员。这样的函数被称为方法。函数:在Scala中函数和方法几乎可以等同(定义、使用、运行机制都是一样的),只是函数的使用方式更加灵活。区别:Scala中函数是一等公民,像原创 2020-07-29 18:45:58 · 1525 阅读 · 0 评论 -
Scala编程——第四章:Scala高级for循环
Scala高级for循环一、基础用法二、高级用法一、基础用法1.基础语法语法:for ( i <- 表达式)scala 不支持java的for(初始变量;条件;更新变量)的写法。i:循环变量,<- :循环符, 表达式: 循环的区间。通过 " i<- 表达式 " 这样的生成器语法,可以遍历表达式区间的元素。for(i <- 1 to 3) println(i) // 1 to 3 左闭右闭 包含1和3for(i <- 1 until 3) println(原创 2020-07-28 11:55:11 · 494 阅读 · 0 评论 -
Scala编程——第三章:Scala流程控制
Scala流程控制一、流程控制说明二、分支控制1.if-else2. switch(模式匹配)三、循环控制1.while1.1while循环中的中断2.for3.while与for一、流程控制说明Scala流程控制结构和java语言基本相同。主要有以下三种结构:顺序控制:程序从上到下顺序执行,中间没有任何的判断和跳转分支控制:if-else分支; switch分支(scala中没有switch,而是使用模式匹配,后面单独讲解)循环控制:while循环、for循环(for功能很强大,后面单独讲。原创 2020-07-28 10:48:45 · 252 阅读 · 0 评论 -
Scala编程——第二章:Scala基础入门(变量、数据类型、运算符)
Scala基础入门一、变量1.定义变量2.深入理解var 和 val二、数据类型1.AnyVal和AnyRef2.Scala类的继承关系3.Scala隐式转化三、运算符一、变量1.定义变量基本语法val | var 变量名 [:变量类型] = 变量值 //例子 val age: Int = 12 var sal: Double = 10000.5 var sal = 12000.5注意事项1.变量类型可以省略。Scala可以通过类型推断,推断出那些不显示指定的类型。2. 类型确定原创 2020-07-27 14:48:22 · 321 阅读 · 2 评论 -
Scala编程——第一章:Scala简介
Scala基础入门1.Scala简介1.1.Scala是什么?1.2 why Scala?注:文章参考《Scala编程》和《快学Scala》。仅用于个人学习记录,侵权删。1.Scala简介1.1.Scala是什么?Scala 是一门综合了面向对象和函数式编程概念的静态类型的编程语言。运行在标准的 Java 平台上,可以与所有 Java 类库无缝协作。Scala是面向对象的。它对面向对象的实现是纯的:每个值都是对象,每个操作都是方法调用。比如 1+2 ,实际上是在调用 Int 类里定义的名+原创 2020-07-27 10:45:04 · 163 阅读 · 0 评论