Scala
Scala编程学习
blueicex2020
走自己的路,少走弯路,让别人无路可走,让别人说去吧!
展开
-
Scala—— 21.模式匹配未完
Scala中的模式匹配类似于Java中的switch语法,模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需要匹配时,会从第一个case分支开始,如果匹配成功,那么执行对应的逻辑代码,如果匹配不成功,继续执行下一个分支进行判断。如果所有的case都不匹配,那么会执行case_分支,类似于Java中的default语句。1.基本形式如果所有case都不匹配,那么会...原创 2020-02-19 17:40:36 · 256 阅读 · 0 评论 -
Scala—— 11.嵌套类
————Blueicex 2020/2/18 20:46 blueice1980@126.com原创 2020-02-19 17:39:55 · 237 阅读 · 0 评论 -
Scala—— 12.隐式转换
————Blueicex 2020/2/18 20:46 blueice1980@126.com原创 2020-02-19 17:33:43 · 119 阅读 · 0 评论 -
Scala—— 23.匿名函数
匿名函数不需要写 def 函数名, 不需要写返回类型,使用类型推导, = 变成 =>, 如果有多行,则使用{} 包括。val triple = (x: Double) => { println("x=" + x) 3 * x}————Blueicex 2020/2/17 10:10 blueice1980@126.com...原创 2020-02-19 17:15:50 · 129 阅读 · 0 评论 -
Scala—— 28.控制抽象
如何实现将一段代码(从形式上看),作为参数传递给高阶函数,在高阶函数内部执行这段代码。控制抽象是这样的函数:参数是函数,函数参数没有输入值也没有返回值。def myRunInThread(f1: () => Unit) = { new Thread { override def run(): Unit = { f1() //只写了 f1 } }.star...原创 2020-02-18 21:09:49 · 172 阅读 · 0 评论 -
Scala—— 27.函数柯里化(curry)
函数编程中,接受多个参数的函数都可以转化为接受单个参数的函数,这个转化过程就叫柯里化。柯里化就是证明了函数只需要一个参数而已。//常规 def mul(x: Int, y: Int) = x * yprintln(mul(10, 10))//闭包 def mulCurry(x: Int) = (y: Int) => x * yprintln(mulCurry(10)(9)) /...原创 2020-02-18 21:09:22 · 237 阅读 · 0 评论 -
Scala—— 26.闭包
闭包就是一个函数和与其相关的引用环境组合的一个整体(实体)。def minusxy(x: Int) = (y: Int) => x - y//f 函数就是闭包.val f = minusxy(20)println("f(1)=" + f(1)) // 19println("f(2)=" + f(2)) // 18传入的变量不是x而是y,x是minsxy的函数的参数。(y: I...原创 2020-02-18 21:08:38 · 170 阅读 · 0 评论 -
Scala—— 25.参数(类型)推断
参数推断省去类型信息(在某些情况下[需要有应用场景],参数类型是可以推断出来的,如list=(1,2,3) list.map() map中函数参数类型是可以推断的),同时也可以进行相应的简写。参数类型是可以推断时,可以省略参数类型。当传入的函数,只有单个参数时,可以省去括号。如果变量只在=>右边只出现一次,可以用_来代替。val list = List(1, 2, 3, 4)pri...原创 2020-02-18 21:08:02 · 241 阅读 · 1 评论 -
Scala—— 24.高阶函数
def plus(x: Int) = 3 + x //说明val result = Array(1, 2, 3, 4).map(plus(_))println(result.mkString(",")) //4,5,6,7 //说明//1. 在scala中,函数也是有类型,比如plus就是 <function1>println("puls的函数类型function1" ...原创 2020-02-18 21:07:26 · 194 阅读 · 0 评论 -
Scala—— 22.样例(模版)类
样例类仍然是类。样例类用case关键字进行声明。样例类是为模式匹配而优化的类。构造器中的每一个参数都成为val-除非它被显式地声明为var(不建议这样做)。在样例类对应的伴生对象中提供apply方法,不用new关键字就能构造出相应的对象。提供unapply方法让模式匹配可以工作。自动生成toString、equals、hashCode和copy方法(有点类似模版类,直接给生成,供程序员...原创 2020-02-18 21:04:17 · 670 阅读 · 0 评论 -
Scala—— 20.系统高价函数
1.带参数的高阶函数package com.blueicex.learn.highlevelfunctionlearn/** * @author Administrator blueicex * @date 2020/2/16 20:18 * @projectname HighLevelFunction * @Mem learn */object HighLevelFunctio...原创 2020-02-18 21:01:33 · 307 阅读 · 0 评论 -
Scala—— 19.集Set
默认情况下,Scala使用的是不可变集合,如果想要使用可变集合,需要引用scala.collection.mutable.Set包。scala> var set1=Set(1,2,3)set1: scala.collection.immutable.Set[Int] = Set(1, 2, 3)scala> var set2=Set(1,2,3,“33”)set2: scala...原创 2020-02-18 20:58:07 · 222 阅读 · 0 评论 -
Scala—— 18.映射Map
Scala中的Map和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的Map是无序的。Scala中,有可变Map(scala.collection.mutable.Map)和不可变Map(scala.collection.immutable.Map)。Scala中的不可变Map是有序的。1.构造不可变映射默认Map是...原创 2020-02-18 20:57:18 · 397 阅读 · 0 评论 -
Scala—— 17.队列Queue
队列是一个有序列表,在底层可以用数组或是链表来实现, 其输入和输出要遵循先入先出的原则。即:现存入队列的数据,要先取出。后存入的要后取。在Scala中,由设计者直接给我们提供队列类型Queue使用。 在Scala中,有scala.collection.mutable.Queue 和 scala.collection.immutable.Queue,一般来说,在开发中通常使用可变集合中的队列。im...原创 2020-02-18 20:56:48 · 359 阅读 · 0 评论 -
Scala—— 15.元组Tuple
元组也是可以理解为一个容器,存放各种相同或者不同类型的数据。说得简单点,就是将多个无关的数据封装为一个整体,称为元组。特点灵活,对数据没有过多的约束。元组中最多只能有22个元素。1.元组的创建scala> :helpAll commands can be abbreviated, e.g., :he instead of :help.:completions <string&g...原创 2020-02-18 20:55:34 · 234 阅读 · 0 评论 -
Scala—— 16.列表List
Scala中的List和Java List不一样,在Java中List是一个接口,真正存放数据的是ArrayList,而Scala的List可以直接存放数据,就是一个object,默认情况下Scala的List是不可变的,List属于序列Seq。sealed abstract class List+A extends scala.collection.immutable.AbstractSeq[...原创 2020-02-18 20:54:49 · 272 阅读 · 0 评论 -
Scala—— 14.数组Array
1.定长数组var array=new Array[T] (n) val arr = new Array[Int](4) //底层 int[] arr = new int[4] println(arr.length) // 4 println("arr(0)=" + arr(0)) // 0 //数据的遍历 for (i <- arr) { ...原创 2020-02-18 20:53:04 · 295 阅读 · 0 评论 -
Scala——13.集合
1.集合分类集合的目的,统一建模语言uml, Scala同时支持不可变集合和可变集合,不可变集合可以安全的并发访问。两个主要的包,不可变集合:scala.collection.immutable,可变集合:scala.collection.mutable加粗样式**。Scala默认采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变(mutable)和不可变(immutable)的版...原创 2020-02-18 20:50:21 · 189 阅读 · 0 评论 -
Scala—— 10.trait特质(接口)(未完待续)
面向对象来看,接口并不属于面向对象的范畴,Scala是纯面向对象的语言,在Scala中,没有接口2) Scala语言中,采用特质trait(特征)来代替接口的概念,也就是说,多个类具有相同的特质(特征)时,就可以将这个特质(特征)独立出来,采用关键字trait声明。理解trait等价于(interface+abstract class)————Blueicex 2020/2/18 20:22 ...原创 2020-02-18 20:45:52 · 233 阅读 · 0 评论 -
Scala—— 9.伴生对象apply方法
在伴生对象中定义apply方法,可以实现:类名(参数)方式来创建对象实例object boke_demo01 { def main(args: Array[String]): Unit = { val list = List(1, 2, 5) println(list) val pig = new Pig("狗蛋") //使用apply方法来创建对...原创 2020-02-18 20:22:02 · 204 阅读 · 0 评论 -
Scala—— 8.伴生对象(静态属性、静态方法)
Scala中静态的概念是伴生对象。Scala语言是完全面向对象(万物皆对象)的语言,所以并没有静态的操作(即在Scala中没有静态的概念)。但是为了能够和Java语言交互(因为Java中有静态概念),就产生了一种特殊的对象来模拟类对象,我们称之为类的伴生对象。这个类的所有静态内容都可以放置在它的伴生对象中声明和调用。object boke_demo01 { def main(args: A...原创 2020-02-18 20:19:32 · 834 阅读 · 0 评论 -
Scala—— 7.抽象
1.重写方法class Person { var name: String = "tom" def printName() { //输出名字 println("Person printName() " + name) } def sayHi(): Unit = { println("sayHi...") }} //这里继承Personclass...原创 2020-02-18 20:07:10 · 174 阅读 · 0 评论 -
Scala—— 6.包
Scala包的作用(和Java一样),区分相同名字的类,当类很多时,很好的管理类,控制访问范围, 对类的功能进行扩展。1.语法package 包名命名规范:一般是小写字母+小圆点一般是com.公司名.项目名.业务模块名比如:com.blueicex.project.model12.基本形式(感性认识)package com.boke{} 表示创建了包 com.boke ,在{}中...原创 2020-02-18 20:05:40 · 298 阅读 · 0 评论 -
Scala—— 4.异常
object boke_demo01 { def main(args: Array[String]): Unit = { try { val r = 10 / 0 } catch { //说明 //1. 在scala中只有一个catch //2. 在catch中有多个case, 每个case可以匹配一种异常 case ex...原创 2020-02-18 20:02:18 · 205 阅读 · 0 评论 -
Scala—— 3.函数
在Scala中,方法和函数几乎可以等同(比如它们的定义、使用、运行机制都是一样的),只是函数的使用方式更加的灵活多样。函数式编程是从编程方式(范式)的角度来谈的,可以这样理解:函数式编程把函数当作一等公民,充分利用函数、只是函数的多种使用方式,在Scala中,函数是一等公民,像变量一样,既可以作为函数的参数使用,也可以将函数赋值给一个变量,函数的创建不用依赖于类或者对象,而在Java当中,函数的创...原创 2020-02-18 19:56:04 · 195 阅读 · 0 评论 -
Scala—— 5.类
Java时面向对象的编程语言,由于历史原因,Java中还存在着非面向对象的内容:基本类型,null,静态方法等。Scala语言来自于Java,所以天生就是面向对象的语言,而且Scala时纯粹的面相对象的语言,即在Scala中,一切皆为对象。类是抽象的,概念的代表一类事物,比如人类。对象是具体的,实际的,代表一个具体事物。 类是对象的模版,对象是类的一个个体,对应一个实例。1.类定义语法[修饰...原创 2020-02-16 10:49:23 · 211 阅读 · 0 评论 -
Scala—— 2. 流程控制
1. 键盘输入语句println(“请输入姓名”)val name = StdIn.readLine()println(“请输入年龄”)val age = StdIn.readInt()println(“请输入薪水”)val sal = StdIn.readDouble()printf(“用户的信息为 name=%s age=%d sal=%.2f”, name, age, sal)...原创 2020-02-16 09:02:05 · 131 阅读 · 0 评论 -
Scala—— 1.变量
Scala语言的特点Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。Scala源代码(.scala)会被编译成Java字节码(.class),然后运行在JVM上,并可以调用现有的Java类库,实现两种语言的无缝对接。Scala单作为一门编程语言来看,非常简洁高效。...原创 2020-02-15 18:12:04 · 297 阅读 · 0 评论