scala
不撸代码闲得慌
这个作者很懒,什么都没留下…
展开
-
Scala之模式匹配(十一)
基本概念模式匹配是采用了match关键字声明,每个分支采用case关键字进行声明,当需要匹配时,会从第一个case分支开始,如果匹配成功,那么执行对应的逻辑代码,如果匹配不成功,继续执行下一个分支进行判断;当所有的都匹配不到时,就会执行case _ 分支,类似于Java中default语句。守卫基本概念如果想要表达匹配某个范围的数据,就需要在模式匹配中增加条件守卫。案例实操val ch = 10ch match { case '+' => sign = 1 case '-' =&原创 2020-09-01 19:03:13 · 184 阅读 · 0 评论 -
Scala之高阶函数的使用(map,filter,reduce,.......)(十)
map映射基础概念在某些场景下,我们可能会对集合中的所有元素进行变换;map方法可以将某个函数应用到集合中的每个元素并产出其结果的集合。应用案例使用map映射函数将一个集合中的元素都乘以2,并返回到一个新集合中val list = List(10, 20, 30)val res = list.map(multiple)println("res = " + res) // 输出的结果: List(20, 40, 60)def multiple(n: Int): Int = { 2 * n原创 2020-08-31 23:25:09 · 1193 阅读 · 0 评论 -
Scala之集合体系(九)
Scala集合基本介绍可变集合与不可变集合可变集合: scala.collection.mutable不可变集合:scala.collection.immutable常用集合种类Seq(序列):有序,比如数组与列表。Set:无序;在SortedSet中,元素以某种排过序的顺序被访问Map:是一组对偶(key,value)数组定长数组第一种方式创建定长数组val arr01 = new Array[Int](10)arr01(1) = 20 // 对数组中的值进行重新赋值第二原创 2020-08-31 14:31:09 · 169 阅读 · 0 评论 -
Scala之隐式函数的使用(八)
简介所谓隐式函数指的是那种以implicit关键字声明的带有单个参数的函数。正如它的名称所表达的,这样的函数将会自动应用,将值从一种类型转换为另一种类型。隐式函数的使用需求分析:使用隐式函数解决数据类型的转换问题object ImplicitDemo01 { def main(args: Array[String]): Unit = { // 编写一个隐式函数将Double =》 Int implicit def douToInt(d: Double): Int = {原创 2020-08-30 22:37:52 · 361 阅读 · 0 评论 -
Scala之特质中的自身类型(七)
简介当特质扩展类时,编译器能够保证的一件事是所有混入该特质的类都认这个类作超类;在Scala中还有另外一套机制可以保证这一点,就是使用自身类型。定义方式当特质以如下代码开始定义时this: 类型 =>它便只能混入指定类型的子类案例操作trait Logger { this: Exception => def log(): Unit = { println(getMessage) }}注意该特质Logger并不扩展Exception类,而是有一个自身类型E原创 2020-08-30 19:42:34 · 377 阅读 · 0 评论 -
Scala之特质构造顺序(六)
简介和类一样,特质也可以有构造器,由字段的初始化和其他特质体中的语句构成。构造顺序声明类的同时混入特质代码案例object MixInSeq { def main(args: Array[String]): Unit = { val ff = new FF println(ff) }}trait AA { println("A...")}trait BB extends AA { println("B....")}trait CC extends原创 2020-08-30 19:24:45 · 413 阅读 · 0 评论 -
Scala之叠加特质的使用(五)
简介构建对象的同时如果混入了多个特质,称之为叠加特质;特质声明的顺序是从左到右,方法执行的顺序从右到左。案例操作object MixInDemo02 { def main(args: Array[String]): Unit = { // 创建一个动态混入对象时,其顺序是从左到右,从父特质开始输出,加载相同的特质只会输出一次 val mysql = new MySQL4 with DB4 with File4 println("======================原创 2020-08-28 18:41:12 · 461 阅读 · 1 评论 -
Scala之面向对象中伴生对象的使用(四)
简介在Java中,通常会用到既有实例方法又有静态方法的类;在Scala中可以通过类与类同名的"伴生"对象来达到相同的目的。所有的静态内容都可以放置在它的伴生对象中声明和调用。案例object AccompanyObject { def main(args: Array[String]): Unit = { println(Person.sex) Person.sayHi() }}// 伴生类class Person { // 非静态的内容写入到该类中 编译之后生成原创 2020-08-28 17:56:21 · 264 阅读 · 0 评论 -
Scala之面向对象中构造器的使用(三)
基础简介Scala创建对象时可以调用构造方法,并且Scala可以有任意多个构造方法(相当于重载操作);在Scala中构造器包括主构造器与辅助构造器。主构造器每一个类都会有主构造器,主构造器并不是以this方法进行定义的,而是与类定义交织在一起。object MainCon { def main(args: Array[String]): Unit = { val worker1 = new Worker("smith") worker1.name }}class Wor原创 2020-08-25 00:04:24 · 343 阅读 · 0 评论 -
Scala之惰性函数(二)
基础概念当val被声明为lazy时,它的初始化将会被推迟;直到我们首次对此进行取值时,函数才会执行,这种函数我们称之为惰性函数。案例使用object LazyDemo01 { def main(args: Array[String]): Unit = { lazy val res = sum(10, 20) println("----------------") //println("res=" + res) } def sum(n1: Int, n2: In原创 2020-08-24 15:53:39 · 196 阅读 · 0 评论 -
Scala之高级for循环以及for推导式(一)
简介Scala相对于Java而言对于for循环有着很大的改变,Scala对for循环这一常见的控制结构提供了非常多的特性,这些特性被称为for推导式和for表达式。范围数据循环方式使用 to 关键字进行循环for (i <- 1 to 10) { println("boom") }1 to 10 这个调用返回数字1到数字10的Range区间(左右两边都是闭区间),让变量 i 遍历 <- 右边的表达式的所有值。使用 until 关键字进行循环val原创 2020-08-23 21:46:25 · 759 阅读 · 0 评论 -
Scala软件安装以及环境配置
window下安装Scala一,安装包的准备提供的Scala安装版本为 scala-2.11.8;百度网盘获取地址如下:链接:https://pan.baidu.com/s/1fAKNcV7ysCec3yx6YHjR5Q提取码:x91z二,安装包解压缩下载到本地后解压缩到本地文件夹即可三,配置环境变量SCALA_HOME D:\install\devlop\scala-2.11.8Path %SCALA_HOME%\bin 四,测试环境scala -versio原创 2020-08-19 19:10:34 · 637 阅读 · 0 评论 -
Scala快速生成文档注释
1.首先进入到该文档所在的路径2.使用cmd进入到命令行窗口3.使用下面的命令生成文档注释scaladoc -d 存放文档所在路径 要生成文档的源码名称example:scaladoc -d d:/doc Test.scala4.点击index就可以查看文档注释了...原创 2020-07-28 15:06:46 · 658 阅读 · 0 评论