★★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 · 335 阅读 · 0 评论 -
ScalaNote23-递归应用
直接看递归的案例~Exercise01计算1-50的和!同时使用循环和递归,并且比较执行时间import org.joda.time.format.DateTimeFormatimport org.joda.time.{DateTime, Period,Duration}//单位:毫秒val time1 = System.currentTimeMillis()println("Sta...原创 2020-03-18 20:42:40 · 115 阅读 · 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 · 261 阅读 · 0 评论 -
ScalaNote21-模式匹配
match模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需要匹配时,会从第一个case分支开始,如果匹配成功,那么执行对应的逻辑代码,如果匹配不成功,继续执行下一个分支进行判断。如果所有case都不匹配,那么会执行case _ 分支。看个Demo:val oper = '#'val n1 = 20val n2 = 10var res = 0oper m...原创 2020-03-15 21:31:31 · 164 阅读 · 0 评论 -
ScalaNote20-集合练习题02
Exercise01编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0和n之间。val n = 10val 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 · 446 阅读 · 0 评论 -
ScalaNote19-集合练习题01
Exercise01val sentence = “AAAAAAAAAABBBBBBBBCCCCCDDDDDDD”将sentence 中各个字符,通过foldLeft存放到 一个ArrayBuffer中import scala.collection.mutable.ArrayBufferval sentence = "AAAAAAAAAABBBBBBBBCCCCCDDDDDDD"def...原创 2020-03-14 00:11:51 · 505 阅读 · 0 评论 -
ScalaNote18-集合的应用
前面介绍了各种集合和对应的增改删查的操作,本文主要介绍集合的其他操作。map映射操作 先看个实际案例:请将List(3,5,7) 中的所有元素都 * 2 ,将其结果放到一个新的集合中返回,即返回一个新的List(6,10,14)。在Python里可以直接用列表推导式完成,Scala中也可以用循环的方式完成,看一个繁琐的方法:import scala.collection.mutable...原创 2020-03-14 00:09:17 · 157 阅读 · 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 · 182 阅读 · 0 评论 -
ScalaNote16-集合之元组、列表、队列
元组Tuple 元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据。说的简单点,就是将多个无关的数据封装为一个整体,称为元组, 最多的特点灵活,对数据没有过多的约束。有点像R里的List~注意:元组中最大只能有22个元素! 看个简单的Demo:// 和python元组定义方式类似val tuple1 = (1, 2, 3, "hello", 4)println(tuple1...原创 2020-03-11 23:19:45 · 202 阅读 · 0 评论 -
ScalaNote15-集合之数组Array
Introscala集合基本介绍:Scala同时支持不可变集合和可变集合,不可变集合可以安全的并发访问两个主要的包:不可变集合:scala.collection.immutable可变集合: scala.collection.mutableScala默认采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变(mutable)和不可变(immutable)的版本Sc...原创 2020-03-11 23:19:13 · 137 阅读 · 0 评论 -
ScalaNote14-隐式转换
Intro 在实际工作中,可能需要指定某些数据类型的相互转化,这时候会用到隐式转换和隐式函数。看一个Demo:class test(){ implicit def f1(d: Double): Int = { d.toInt } var x:Int=3.9}val testObj = new testtestObj.xwarning: t...原创 2020-03-09 00:06:25 · 141 阅读 · 0 评论 -
ScalaNote13-嵌套类
Intro 在Scala中,你几乎可以在任何语法结构中内嵌任何语法结构。如在类中可以再定义一个类,这样的类是嵌套类,其他语法结构也是一样。基本语法如下:class ScalaOuterClass { // 外部类 class ScalaInnerClass { //成员内部类 }}object ScalaOuterClass { //伴生对象 class ScalaStat...原创 2020-03-08 23:02:36 · 112 阅读 · 0 评论 -
ScalaNote12-特质trait
介绍特质相关内容,知识点多且杂,力有未逮~Intro 特质是为了抽样出不同类共有的部分,方便在各个类中进行调用,这似乎有点像父类和子类继承的意思,有啥不同?Scala中类继承为单一继承,也就是说子类只能有一个父类,但是一个子类可以"继承"or调用多个Trait。当一个类可以和多个Trait混合,这些Trait定义的成员变量和方法也就变成了该类的成员变量和方法。trait 的声明格式:...原创 2020-03-08 21:10:18 · 228 阅读 · 0 评论 -
ScalaNote11-面向过程练习题2
Exercise01该题是Java题,因此有静态属性、静态方法等词,反正用Scala实现即可在Frock类中声明私有的静态属性currentNum,初始值为100000,作为衣服出厂的序列号起始值声明公有的静态方法getNextNum,作为生成上衣唯一序列号的方法。每调用一次,将currentNum增加100,并作为返回值在TestFrock类的main方法中,分两次调用getNextN...原创 2020-02-27 08:12:00 · 1276 阅读 · 0 评论 -
ScalaNote10-单例对象、伴生对象、伴生类
还是老样子,对java不是很熟悉,所以有些概念不是很理解。还是应用为主,初步了解用法,后面有机会再Update。单例对象 在idea中,经常会新建一个object,在里面定义N多个函数,最后用main函数执行。那这个object是干嘛的?先定义个object瞅瞅:object objDemo{ var name = "jack" def printName(){ ...原创 2020-02-27 08:06:36 · 277 阅读 · 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 · 1806 阅读 · 1 评论 -
ScalaNote08-抽样、封装、继承
抽象 在定义一个类时,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板),这种研究问题的方法称为抽象。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NNOsAV2c-1582451454810)(…/Picture/pic03.jpg)]比如上面的例子,我们定义个Account类,它有共有的属性:账号、余额、密码,不同账号都可以有以下的...原创 2020-02-23 17:51:07 · 215 阅读 · 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 · 271 阅读 · 0 评论 -
ScalaNote06-包相关
包基础概念 现在有两个程序员共同开发一个项目,程序员小明希望定义一个类取名 Dog ,程序员小红也想定义一个类也叫Dog,我们知道同一个脚本里类名不可以一样。这时可以使用包进行区分,并且控制访问范围。一般大家会用IDEA开发scala代码,此时可以通过子包的方式,分别存放Dog类的文件。调用时,带上路径即可,比如:val dog1 = new scala.xiaoming.Dogval d...原创 2020-02-22 22:52:09 · 162 阅读 · 0 评论 -
ScalaNote05-类、属性、方法
类通俗定义 **看一个实际案例:**张老太养了只猫猫:一只名字叫小白,今年3岁,白色。还有一只叫小花,今年10岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名错误,则显示 张老太没有这只猫猫。类:管理多个不同类型的数据-[属性](如猫名字、年龄、颜色)对属性进行操作-[方法](如猫可以run、cry等等) 类是抽象的,概念的,...原创 2020-02-21 20:05:28 · 274 阅读 · 0 评论 -
ScalaNote04-函数式编程
函数函数定义 为完成某一功能的程序指令(语句)的集合,称为函数。在scala中函数的基本语法如下:def 函数名 ([参数名: 参数类型], ...)[[: 返回值类型] =] { 语句... return 返回值}函数声明关键字为def (definition)[参数名: 参数类型], …:表示函数的输入(就是参数列表), 可以没有。 如果有,多个参数使用逗号间隔函数中的...原创 2020-02-20 10:45:22 · 124 阅读 · 0 评论 -
ScalaNote03-程序流程控制
Intro 介绍分支控制和循环相关内容。分支控制if-else单分支if(条件表达式){执行代码块}if-else的单分支可以赋值给变量var x= 10var s =if(x>0) 1 else -1println(s"s=${s}")s=1x: Int = 10s: Int = 1如果混合类型表达式,返回的结果类型为Anyvar x= 10...原创 2020-02-18 20:33:34 · 110 阅读 · 0 评论 -
ScalaNote02-变量
变量变量概念 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。变量声明 scala要求变量使用前先声明和定义,并且初始化值。声明的语法:var|val 变量名[:变量类型] = 变量值 其中var修饰的变量可以改变,val修饰的变量不可以改变。声明变量时,类型也可以省略,编译器可以做类型推...原创 2020-02-18 20:32:55 · 324 阅读 · 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 · 188 阅读 · 0 评论