
★★Scala基础
scala基础知识,包括安装和基础语法等
维格堂406小队
人天生都是软弱的,唯其软弱而犹能承担起苦难,才显出人的尊严。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ScalaNote24-模式匹配和高阶函数练习题
书到用时方恨少,很多函数还是不熟悉啊!!! Exercise01 利用模式匹配,编写一个swap函数,接受一个整数的对偶,返回对偶的两个组成部件互换位置的新对偶 //对偶貌似就是元组的意思,姑且认为他是元组吧 var tuple = (4,5) println(tuple.getClass) def swap(tuple:Tuple2[Int,Int])={ tuple match{ ...原创 2020-03-19 23:28:37 · 403 阅读 · 0 评论 -
ScalaNote23-递归应用
直接看递归的案例~ Exercise01 计算1-50的和!同时使用循环和递归,并且比较执行时间 import org.joda.time.format.DateTimeFormat import org.joda.time.{DateTime, Period,Duration} //单位:毫秒 val time1 = System.currentTimeMillis() println("Sta...原创 2020-03-18 20:42:40 · 175 阅读 · 0 评论 -
ScalaNote22-函数式高级编程
偏函数 先看一个需求,给你一个集合val list = List(1, 2, 3, 4, “abc”) ,请完成如下要求: 将集合list中的所有数字+1,并返回一个新的集合 要求忽略掉 非数字 的元素,即返回的 新的集合 形式为 (2, 3, 4, 5) 用之前学过的知识,这个题有两个解法,第一个是利用filter和map函数 filter筛选出Int的元素,注意此时返回的Any类型 把fil...原创 2020-03-17 23:32:21 · 326 阅读 · 0 评论 -
ScalaNote21-模式匹配
match 模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需要匹配时,会从第一个case分支开始,如果匹配成功,那么执行对应的逻辑代码,如果匹配不成功,继续执行下一个分支进行判断。如果所有case都不匹配,那么会执行case _ 分支。看个Demo: val oper = '#' val n1 = 20 val n2 = 10 var res = 0 oper m...原创 2020-03-15 21:31:31 · 200 阅读 · 0 评论 -
ScalaNote20-集合练习题02
Exercise01 编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0和n之间。 val n = 10 val arr = scala.collection.mutable.ArrayBuffer[Int]() for (i <- 1 to 10){ arr.append(scala.util.Random.nextInt(n)) } println(arr) Ar...原创 2020-03-14 22:24:39 · 520 阅读 · 0 评论 -
ScalaNote19-集合练习题01
Exercise01 val sentence = “AAAAAAAAAABBBBBBBBCCCCCDDDDDDD” 将sentence 中各个字符,通过foldLeft存放到 一个ArrayBuffer中 import scala.collection.mutable.ArrayBuffer val sentence = "AAAAAAAAAABBBBBBBBCCCCCDDDDDDD" def...原创 2020-03-14 00:11:51 · 579 阅读 · 0 评论 -
ScalaNote18-集合的应用
前面介绍了各种集合和对应的增改删查的操作,本文主要介绍集合的其他操作。 map映射操作 先看个实际案例:请将List(3,5,7) 中的所有元素都 * 2 ,将其结果放到一个新的集合中返回,即返回一个新的List(6,10,14)。在Python里可以直接用列表推导式完成,Scala中也可以用循环的方式完成,看一个繁琐的方法: import scala.collection.mutable...原创 2020-03-14 00:09:17 · 219 阅读 · 0 评论 -
ScalaNote17-集合之映射Map
映射Map Scala中的Map是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的Map是无序的。Scala中,有可变Map (scala.collection.mutable.Map) 和 不可变Map(scala.collection.immutable.Map)。 // 构造不可变映射 val map1 = Map("Alice" ...原创 2020-03-12 14:51:22 · 232 阅读 · 0 评论 -
ScalaNote16-集合之元组、列表、队列
元组Tuple 元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据。说的简单点,就是将多个无关的数据封装为一个整体,称为元组, 最多的特点灵活,对数据没有过多的约束。有点像R里的List~注意:元组中最大只能有22个元素! 看个简单的Demo: // 和python元组定义方式类似 val tuple1 = (1, 2, 3, "hello", 4) println(tuple1...原创 2020-03-11 23:19:45 · 268 阅读 · 0 评论 -
ScalaNote15-集合之数组Array
Intro scala集合基本介绍: Scala同时支持不可变集合和可变集合,不可变集合可以安全的并发访问 两个主要的包: 不可变集合:scala.collection.immutable 可变集合: scala.collection.mutable Scala默认采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变(mutable)和不可变(immutable)的版本 Sc...原创 2020-03-11 23:19:13 · 168 阅读 · 0 评论 -
ScalaNote14-隐式转换
Intro 在实际工作中,可能需要指定某些数据类型的相互转化,这时候会用到隐式转换和隐式函数。看一个Demo: class test(){ implicit def f1(d: Double): Int = { d.toInt } var x:Int=3.9 } val testObj = new test testObj.x warning: t...原创 2020-03-09 00:06:25 · 200 阅读 · 0 评论 -
ScalaNote13-嵌套类
Intro 在Scala中,你几乎可以在任何语法结构中内嵌任何语法结构。如在类中可以再定义一个类,这样的类是嵌套类,其他语法结构也是一样。基本语法如下: class ScalaOuterClass { // 外部类 class ScalaInnerClass { //成员内部类 } } object ScalaOuterClass { //伴生对象 class ScalaStat...原创 2020-03-08 23:02:36 · 163 阅读 · 0 评论 -
ScalaNote12-特质trait
介绍特质相关内容,知识点多且杂,力有未逮~ Intro 特质是为了抽样出不同类共有的部分,方便在各个类中进行调用,这似乎有点像父类和子类继承的意思,有啥不同?Scala中类继承为单一继承,也就是说子类只能有一个父类,但是一个子类可以"继承"or调用多个Trait。当一个类可以和多个Trait混合,这些Trait定义的成员变量和方法也就变成了该类的成员变量和方法。 trait 的声明格式: ...原创 2020-03-08 21:10:18 · 298 阅读 · 0 评论 -
ScalaNote11-面向过程练习题2
Exercise01 该题是Java题,因此有静态属性、静态方法等词,反正用Scala实现即可 在Frock类中声明私有的静态属性currentNum,初始值为100000,作为衣服出厂的序列号起始值 声明公有的静态方法getNextNum,作为生成上衣唯一序列号的方法。每调用一次,将currentNum增加100,并作为返回值 在TestFrock类的main方法中,分两次调用getNextN...原创 2020-02-27 08:12:00 · 1390 阅读 · 0 评论 -
ScalaNote10-单例对象、伴生对象、伴生类
还是老样子,对java不是很熟悉,所以有些概念不是很理解。还是应用为主,初步了解用法,后面有机会再Update。 单例对象 在idea中,经常会新建一个object,在里面定义N多个函数,最后用main函数执行。那这个object是干嘛的?先定义个object瞅瞅: object objDemo{ var name = "jack" def printName(){ ...原创 2020-02-27 08:06:36 · 316 阅读 · 0 评论 -
ScalaNote09-面向过程练习题
Exercise1 编写Computer类,包含CPU、内存、硬盘等属性,getDetails方法用于返回Computer的详细信息 编写PC子类,继承Computer类,添加特有属性【品牌brand】 编写NotePad子类,继承Computer类,添加特有属性【颜色color】 编写Test Object,在main方法中创建PC和NotePad对象,分别对象中特有的属性赋值,以及从Compu...原创 2020-02-23 21:05:15 · 1979 阅读 · 1 评论 -
ScalaNote08-抽样、封装、继承
抽象 在定义一个类时,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板),这种研究问题的方法称为抽象。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NNOsAV2c-1582451454810)(…/Picture/pic03.jpg)] 比如上面的例子,我们定义个Account类,它有共有的属性:账号、余额、密码,不同账号都可以有以下的...原创 2020-02-23 17:51:07 · 291 阅读 · 0 评论 -
ScalaNote07-类的练习题
整几道练习题做做~ Exercises 1 编写一个Time类,加入只读属性hours和minutes,和一个检查某一时刻是否早于另一时刻的方法before(other:Time):Boolean。Time对象应该以new Time(hrs,min)方式构建。 class Time(inHour:Int,inMinutes:Int){ // 主构造器进行值的初始化 // 定义两个属...原创 2020-02-22 23:32:22 · 348 阅读 · 0 评论 -
ScalaNote06-包相关
包基础概念 现在有两个程序员共同开发一个项目,程序员小明希望定义一个类取名 Dog ,程序员小红也想定义一个类也叫Dog,我们知道同一个脚本里类名不可以一样。这时可以使用包进行区分,并且控制访问范围。一般大家会用IDEA开发scala代码,此时可以通过子包的方式,分别存放Dog类的文件。调用时,带上路径即可,比如: val dog1 = new scala.xiaoming.Dog val d...原创 2020-02-22 22:52:09 · 205 阅读 · 0 评论 -
ScalaNote05-类、属性、方法
类 通俗定义 **看一个实际案例:**张老太养了只猫猫:一只名字叫小白,今年3岁,白色。还有一只叫小花,今年10岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名错误,则显示 张老太没有这只猫猫。 类: 管理多个不同类型的数据-[属性](如猫名字、年龄、颜色) 对属性进行操作-[方法](如猫可以run、cry等等) 类是抽象的,概念的,...原创 2020-02-21 20:05:28 · 346 阅读 · 0 评论 -
ScalaNote04-函数式编程
函数 函数定义 为完成某一功能的程序指令(语句)的集合,称为函数。在scala中函数的基本语法如下: def 函数名 ([参数名: 参数类型], ...)[[: 返回值类型] =] { 语句... return 返回值 } 函数声明关键字为def (definition) [参数名: 参数类型], …:表示函数的输入(就是参数列表), 可以没有。 如果有,多个参数使用逗号间隔 函数中的...原创 2020-02-20 10:45:22 · 179 阅读 · 0 评论 -
ScalaNote03-程序流程控制
Intro 介绍分支控制和循环相关内容。 分支控制if-else 单分支 if(条件表达式){ 执行代码块 } if-else的单分支可以赋值给变量 var x= 10 var s =if(x>0) 1 else -1 println(s"s=${s}") s=1 x: Int = 10 s: Int = 1 如果混合类型表达式,返回的结果类型为Any var x= 10 ...原创 2020-02-18 20:33:34 · 160 阅读 · 0 评论 -
ScalaNote02-变量
变量 变量概念 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。 变量声明 scala要求变量使用前先声明和定义,并且初始化值。声明的语法: var|val 变量名[:变量类型] = 变量值 其中var修饰的变量可以改变,val修饰的变量不可以改变。声明变量时,类型也可以省略,编译器可以做类型推...原创 2020-02-18 20:32:55 · 372 阅读 · 0 评论 -
ScalaNote01-Scala基础
通过尚硅谷-韩顺平老师的Scala视频课和《快学Scala》、《Scala编程》两本书学习Scala,做些笔记巩固理解。 Scala诞生 Scala是Scalable Language的简写,是一门多范式的编程语言。由马丁·奥德斯基(Martin Odersky)发明,Spark的兴起,带动了Scala语言的发展。 Scala和Java、JVM 之前也没有学过Java,算是java小白...原创 2020-01-10 20:53:37 · 253 阅读 · 0 评论