Scala
极度丶浚爱
一个寻找生命价值的人。
展开
-
Scala 函数式编程中的高阶函数练习
Scala 函数式编程中的高阶函数练习编写一个 compose 函数,将两个类型为 Double=>Option[Double]的函数组合在一起,产生另一个同样类型的函数。如果其中一个函数返回 None,则组合函数也应返回 None。例如:def f(x : Double) = if ( x >= 0) Some(sqrt(x)) else Nonedef g(x : Dou...原创 2020-03-13 14:36:47 · 499 阅读 · 0 评论 -
Scala函数式编程之高阶函数
Scala 函数式编程之高阶函数1 作为参数的函数2 匿名函数3 高阶函数3.1 高阶函数的使用3.2 高阶函数同样可以返回函数类型4 参数(类型)推断5 闭包6 柯里化6.1 柯里化示例6.2 柯里化的应用7 控制抽象7.1 使用示例7.2 进阶用法: 实现类似 while 的 until 函数1 作为参数的函数函数作为一个变量传入到了另一个函数中,那么该作为参数的函数的类型是: func...原创 2020-03-13 14:09:24 · 256 阅读 · 0 评论 -
Scala 中的数据结构&模式匹配练习
Scala 中的数据结构&模式匹配练习数据结构数据结构编写一段代码,将 a 设置为一个 n 个随机整数的数组,要求随机数介于 0和 n 之间。 def main(args: Array[String]): Unit = { randomArray(10).foreach(println) } def randomArray(n:Int):Array[Int]=...原创 2020-03-12 22:59:58 · 225 阅读 · 0 评论 -
Scala模式匹配的用法
模式匹配1 switch2 守卫3 模式中的变量1 switchScala 中的模式匹配类似于 Java 中的 switch 语法,但是更加强大。模式匹配语法中, 采用 match 关键字声明, 每个分支采用 case 关键字进行声明,当需要匹配时,会从第一个 case 分支开始,如果匹配成功,那么执行对应的逻辑代码,如果匹配不成功,继续执行下一个分支进行判断。如果所有 case 都不匹...原创 2020-03-11 16:19:54 · 516 阅读 · 0 评论 -
Scala关于运算符问题
操作符这部分内容没有必要刻意去理解和记忆, 语法使用的多了,自然就会产生感觉,该部分内容暂时大致了解一下即可。如果想在变量名、类名等定义中使用语法关键字(保留字) ,可以配合反引号:val `val` = 42这种形式叫中置操作符, A 操作符 B 等同于 A.操作符(B)后置操作符, A 操作符等同于 A.操作符,如果操作符定义的时候不带()则调用时不能加括号无参函数不...原创 2020-03-10 18:35:32 · 163 阅读 · 0 评论 -
Scala中的Queue&Map&Set&集合操作用法
集合操作1 队列 Queue1.1 队列的创建1.2 队列元素的追加1.3 向队列中追加 List1.4 按照进入队列的顺序删除元素1.5 塞入数据1.6 返回队列的第一个元素1.7 返回队列最后一个元素1.8 返回除了第一个以外剩余的元素(尾部)2 映射 Map2.1 构造不可变映射2.2 构造可变映射2.3 空的映射2.4 对偶元组(包含键值对的二元组)2.5 取值2.6 遍历 map2.6 ...原创 2020-03-10 16:28:38 · 384 阅读 · 0 评论 -
Scala中的List用法
列表 List1 创建List&访问 List 元素2 List 元素的追加3 List 的创建与追加,符号“::” 连续添加元素 使用::时集合对象一定要放在最右边4 :: 把对象追加进去; :::把集合种的元素追加进去1 创建List&访问 List 元素 val list = List(1,2,3,4) println(list(0))1如果希望得...原创 2020-03-10 11:52:52 · 280 阅读 · 0 评论 -
Scala中的元组用法
元组 Tuple1 元组的创建2 元组数据的访问,注意元素的访问有下划线,并且访问下标从 1 开始,而不是 03 元组的遍历4 二元组元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据。说的简单点,就是将多个无关的数据封装为一个整体1 元组的创建 val t1 = (1,2,3,4,"abc",true,(1,2,3)) println(t1)(1,2,3...原创 2020-03-10 11:28:01 · 309 阅读 · 0 评论 -
Scala中的数组用法
数组 Array1 定长数组(声明泛型)2 变长数组(声明泛型)3 定长数组与变长数组的转换4 多维数组5 与 Java 数组的互转6 数组的遍历1 定长数组(声明泛型) //第一种方式定义数组,这里的数组等同于 Java 中的数组 //中括号中的类型其实就是 Java 数组的类型 val arr1 = new Array[Int](10) //赋值 a...原创 2020-03-10 11:00:01 · 200 阅读 · 0 评论 -
Scala中的集合总述
Scala中的集合总述数据结构特点数据结构特点Scala 同时支持可变集合和不可变集合,不可变集合从不可变,可以安全的并发访问。两个主要的包:不可变集合: scala.collection.immutable可变集合:scala.collection.mutableScala 默认采用不可变集合, 对于几乎所有的集合类, Scala 都同时提供了可变和不可变的版本。...原创 2020-03-10 10:17:12 · 89 阅读 · 0 评论 -
Scala面向对象编程练习
Scala面向对象编程练习1 类2 对象1 类编写一个 Time 类,加入只读属性 hours 和 minutes,和一个检查某一时刻是否早于另一时刻的方法 before(other:Time):Boolean。Time 对象应该以 new Time(hrs,min)方式构建。class Time(val hrs:Int,val min:Int){ val hours = hrs ...原创 2020-03-09 21:22:59 · 576 阅读 · 0 评论 -
Scala中的隐式转换
隐式转换和隐式参数1 隐式转换2 利用隐式转换丰富类库功能3 隐式值4 隐式类5 隐式的转换时机6 隐式解析机制7 隐式转换的前提1 隐式转换隐式转换函数是以 implicit 关键字声明的带有单个参数的函数。这种函数将会自动应用,将值从一种类型转换为另一种类型。 //隐式转换 //int i = (int)5.5 //val i:Int = 5.5。toInt...原创 2020-03-07 22:41:04 · 138 阅读 · 0 评论 -
Scala面向对象之特质语法
特质1 带有具体实现的特质2 带有特质的对象,动态混入3 叠加在一起的特质4 在特质中重写抽象方法5 当作富接口使用的特质6 特质中的具体字段7 特质中的抽象字段8 特质构造顺序9 初始化特质中的字段10 扩展类的特质10.1 特质可以继承自类,以用来拓展该类的一些功能10.2 所有混入该特质的类,会自动成为那个特质所继承的超类的子类10.3 如果混入该特质的类,已经继承了另一个类,不就矛盾了?...原创 2020-03-07 14:16:54 · 164 阅读 · 0 评论 -
Scala:面向对象之继承语法差异补齐
面向对象之继承语法差异补齐1 继承1.1 重写方法1.2 类型检查和转换1.3 受保护的字段和方法1.4 超类的构造1.5 覆写字段1.6 抽象类1.7 匿名子类1.8 构造顺序和提前定义1 继承和 Java 一样使用 extends 关键字,在定义中给出子类需要而超类没有的字段和方法,或者重写超类的方法。如果类声明为 final,他将不能被继承。如果单个方法声明为 final,将不能被重写...原创 2020-03-06 23:08:07 · 103 阅读 · 0 评论 -
Sgg:Scala面向对象语法(包的用法)
包的用法1 属性1.1 构造器参数1.2 Bean 属性2 包2.1 包的作用域2.1.1 形式体现2.2 包对象1 属性1.1 构造器参数Scala 类的主构造器函数是可以添加参数的。如果参数未用任何修饰符修饰,那么这个参数是局部变量。class Scala05_Field(name:String = "zhang3",age:Int){ //此处的 name 未加任何修饰,是局部变量...原创 2020-01-06 19:36:38 · 162 阅读 · 0 评论 -
Scala面向对象语法(对象的其他语法差异总结)
对象的其他语法差异1 单例模式1 单例模式原创 2020-01-06 16:54:19 · 90 阅读 · 0 评论 -
Sgg:Scala面向对象语法(类&构造器)
类&构造器1 类2 对象构造器主构造器辅助构造器Scala 是基于 Java 的语言,所以基本的语法非常的类似,但是, 为了能好的体现,高效,简单,灵活等特性, Scala 语言做了极大的努力。 对 Java 的很多语法进行了改进。1 类在 Scala 中,你几乎可以在任何语法结构中内嵌任何语法结构。 如在类中可以再定义一个类,这样的类是嵌套类, 其他语法结构也是一样。嵌套类类...原创 2019-12-19 18:22:19 · 139 阅读 · 0 评论 -
Sgg:Scala基础语法之异常
Scala异常Scala 提供 try 和 catch 块来处理异常。 try 块用于包含可疑代码。 catch 块用于处理 try块中发生的异常。可以根据需要在程序中有任意数量的 try…catch 块。语法处理上和 Java 类似,但是又不尽相同。什么是异常?异常是一个错误对象,异于正常的表现Error 和Exception都是Throwable的子类Error不可改正的错误,...原创 2019-12-18 20:41:21 · 112 阅读 · 0 评论 -
Sgg:Scala基础语法(下)
函数1 函数有返回值2 函数无返回值3 函数有参数4 变长参数5 递归函数6 过程7 惰性函数scala 定义函数的标准格式为:def 函数名(参数名 1: 参数类型 1, 参数名 2: 参数类型 2) : 返回类型 = {函数体}1 函数有返回值 //如果使用return 必须指明返回类型 def test1():String = { return "abc" }...原创 2019-12-18 19:55:22 · 129 阅读 · 0 评论 -
Sgg:Scala的基础语法(中)
Scala的基础语法(中)1 控制结构1 控制结构Scala的控制结构基本思想与Java相似,但是语法不同。if else的语句输出结果还可以单独赋值给一个变量。 val i = 10; val result = if(i > 10){ println("大于10") }else{ println("小于等于10") } ...原创 2019-12-18 17:40:09 · 164 阅读 · 0 评论 -
Sgg:Scala语法基础(上)
Scala语法基础(上)1. 基础语法2 标识符3 变量4 常用类型4.1AnyVal:任意值类型4.2 AnyRef:任意的引用类型4.3 Nothing5 算数操作符重载6 调用函数和方法1. 基础语法Scala 语言是基于 Java 虚拟机运行的,所以基本的语法和 Java 是没有区别的。但是为了简化 Java 的开发以及融合其他的编程语言的优点和特性, Scala 在基本的语法上做了大...原创 2019-11-24 18:07:18 · 177 阅读 · 0 评论 -
Sgg:Scala 面向对象编程的基本认知
1 面向对象编程Scala是完全面向对象编程的,没有static、接口等概念。结构化编程是遵循按部就班的解决问题原则,俗称面向过程,先做什么后做什么,而面向对象编程是把一个问题分成多个小问题,把一个系统分成多个不同的组成部分,每个 部分有他自己的功能,最后整合在一起。面向对象编程中,一切事物皆对象,小到每个元素,大到飞机轮船,完事万物皆对象,不一定是物体,还可以是事件,计划等。具有相同属性...原创 2019-11-08 18:34:21 · 312 阅读 · 0 评论 -
Sgg:Scala函数式编程的基本认知
函数式编程Scala函数式编程相当于面向对象编程的方法封装,是一种“编程范式”,是为了编写程序的方法论。Scala函数式编程是“结构化编程”的一种,他的思想是把运算过程尽量写成漫画一系列嵌套的函数调用。函数为了把一些特定功能的代码封装在一个体系之内,方便使用,提高代码的复用性。函数编程语言的基础是λ-演算。下面我们尝试在IDEA中进行函数式编程,首先在编程之前我们要进行一定的准备工作,就...原创 2019-11-08 16:05:19 · 419 阅读 · 0 评论 -
Sgg:认识Scala与Scala的开发环境
1 认识Scala1.1 Scala简述Scala比Java更为复杂,与Java有着密不可分的联系。它是一种面向对象与函数式编程结合的编程语言,在多次语言复杂度排行榜中排行第一,它很难去理解,但是它在其他语言的基础上省去了很多细节。它的发明者是马丁·奥德斯基,是一个狂热的编译器爱好者。1.2 Scala与Java的关系Scala非常的高效简单,使得编程人员更加愉悦。基于C语言和C++都认为...原创 2019-11-03 20:26:06 · 153 阅读 · 0 评论