![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
scala学习笔记
ALAN-YOUNG
行至水穷处,坐看云起时
展开
-
scala学习笔记(六)包与引入
1、Scala中包可以嵌套包的引入可以使用相对路径,但是这里会造成一些问题,就是在包嵌套中,如果出现了和默认包scala包(默认被引入)中同名包的时候,就会造成一些混乱 如果要使用绝对路径引入包,需要以_root_开始,例如val sub =new _root_.scala.collection.mutable.ArrayBuffer[String] Scala包在引入原创 2015-09-15 11:06:59 · 370 阅读 · 0 评论 -
scala学习笔记(十六) 类型参数与隐式转换
Scala中的类型参数晦涩难懂,不过有几个基本要点可以记录 T上界,通俗理解T是UpperBound的子类T >: LowerBound下界,通俗理解为T为LowerBound的超类T <% Comparable[T]视图界定,简单理解为,T可以通过隐式转换为后者T : Ordering上下文界定,必须存在一个类型为Ordering[T]的隐式值,这里还没有原创 2015-09-21 14:56:15 · 775 阅读 · 0 评论 -
scala学习笔记(十五) 高等类型
类或特质可以定义一个在子类中被具体化的抽象类型,如下: trait Reader { type Contents //这里定义一个抽象类型,子类中必须指定这个类型 def read(fileName: String): Contents } class StringReader extends Reader { type Contents = S原创 2015-09-21 14:54:03 · 393 阅读 · 0 评论 -
scala学习笔记(十三) 模式匹配与样例类
如果要问scala的核心类容是什么,以我接触的情况来看,模式匹配与样例绝对是核心中的核心 因为scala是运行与JVM的,所以我们很多时候不自觉的会将他与java来进行比较,但是在这章之前它除了提供了一些让代码看起来更加简洁的语法糖外(语法糖大部分情况下可以被高级IDE弥补),似乎只有函数参数比较吸引人,而函数参数使用上面其实和C++的函数指针也是比较类似的,所以结论是,前面的都是sc原创 2015-09-17 16:14:25 · 468 阅读 · 0 评论 -
scala学习笔记(十四) 注解
Scala中移除了一些关键字改用注解来表示@volatile,@transient ,@strictfp ,@nativeScala中没有首检异常,使用@throws来与java兼容例如:class Book{@throws(classOf[IOException]) defread(fileName : String){ … }} Scala中有很原创 2015-09-17 16:18:12 · 269 阅读 · 0 评论 -
scala学习笔记(十二) 集合
Scala的集合分为三大分支序列 集 映射 1、所有集合都扩展自Iterable特质2、几乎所有的集合都分为可变与不可变版本3、集(Set)不保证插入顺序的4、使用 +来添加元素, -来移除元素,+:添加到头部,:+添加到尾部, ++用来将两个集合拼接, --移除后面集合的所有元素5、scala的集合中已经包含了很多内原创 2015-09-17 16:09:24 · 370 阅读 · 0 评论 -
scala学习笔记(九) 特质
要点:类可以实现任意数量的特质特质可以提供实现当一个类实现多个特质的时候,顺序很重要 ——其方法需要被先执行的特质应该放在越后面 注意1:因为scala中一个类可以实现多个特质,然而特质中的又可以提供实现,所以就存在了c++中多继承的问题,究竟是调用哪一个的问题。Scala中的解决办法是如果一个类扩展多个特质,并且有冲突的方法实现,那么扩展类必须重写该方法,你可以在扩展类中原创 2015-09-16 15:06:50 · 338 阅读 · 0 评论 -
scala学习笔记(十一) 高阶函数
Scala作为函数式语言,函数自然是头等公民… 一个接收函数作为参数的函数称为高阶函数比如定义如下:defvalueAtOneQuarter(f: (Double) => Double) = f(0.25)这个函数接收一个参数为Double返回值为Double的函数作为参数。 高阶函数还可以是返回一个函数作为参数的函数,如下defmulBy(factor : Dou原创 2015-09-16 15:14:21 · 322 阅读 · 0 评论 -
scala学习笔记(十) 操作符
操作符的规则大体和其他语言差不多,有几个需要说明的:1、由于scala中允许运算符重载,所以当你看到一起奇怪的运算符的时候不要奇怪,这些都是方法调用而已2、方法调用的.操作符很多时候可以不写,而是用空格的方式,另外对于无参方法你也可以不写(),但是有一个比较通用的规则是,对于没有返回值的方法还是写上()3、scala中的几个特殊方法apply,update,unapply,unappl原创 2015-09-16 15:13:06 · 310 阅读 · 0 评论 -
scala学习笔记(五) 类
要点包括:类中的字段都自动带有getter和setter方法每个类都有一个主要的构造器,这构造器和类的定义写在一起,这个构造器的参数会直接成为类的字段,如下class Point(x:Int,y:Int){}这样默认Point类就具备了x,y两个字段了,并且默认是val(不可修改) 调用类中的无参方法,可以写上后面的圆括号,也可以不写,一般来说入sc原创 2015-09-15 11:05:38 · 622 阅读 · 0 评论 -
scala学习笔记(二) 控制语句
Scala的大部分表达式都有返回值,所以可以将表达式负值给其他变量或者作为参数传递 如果一个表达式或者函数没有输出值则由系统默认返回一个Unit作为占位,表示为(),你可以在print中打印出来看。 传统其他语句的赋值如x=y=1 这样的语句在scala里面得到的结果不是你想要的,这个语句的结果是y=1,但是x=(),也就是Unit。 Scala的高级for原创 2015-09-15 10:41:02 · 395 阅读 · 0 评论 -
scala学习笔记(三)数组
要点:1、若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer2、如果提供了初值则不使用new3、用()来访问元素4、用 for(elem 来遍历元素5、用 for(elem …) … yield …来产生新数组6、与java的互操作使用scala.collection.JavaConversions中的转换函数 如果要从数组的原创 2015-09-15 10:42:18 · 305 阅读 · 0 评论 -
scala学习笔记(七) 继承
Scala在继承上面与java的一些差别:1、scala重写一个非抽象方法必须加 override关键字2、只有主构造器可以调用父类的主构造器 类型检查与使用上,不再是使用java的 instanceOf来判断了,而是使用isInstanceOf来进行判断对象,使用asInstanceOf来转换对象,例如:If(p.isInstanceOf[A]){val原创 2015-09-15 11:08:56 · 325 阅读 · 0 评论 -
scala学习笔记(四) 映射与元组
scala中的map可以使用mapValues.map(推导式)来批量修改值 scala中有自带的可变集合与不可变集合,java集合在scala中也可以使用 不可变集合在immutable包中可变集合在mutable包中 元组(tuple)是不同类型的值的聚集,包括但不限于对偶(键值对) 使用拉链操作(zip)可以将几个独立的集原创 2015-09-15 10:52:52 · 348 阅读 · 0 评论 -
Scala学习笔记(一) 基础类型
今天开始准备学习scala。 一、Scala中类与伴生类的关系: 类与java中类似,伴生类者更加类似于java静态类 伴生类中的apply方法默认是可以不用写出的,如: System("1")等于调用 System.apply("1"),这里是语言提供的语法糖,可以省略一些方法名,使程序看上去更加自然,方便理解。 Scala中原创 2015-09-15 10:34:07 · 437 阅读 · 0 评论 -
scala学习笔记(八) 文件与正则表达式
Scala中只提供字符流读取方式,其他读取需要使用java中的类。如果是字符文件读取,可使用下面的方式 valsource = Source.fromFile("file.txt","UTF-8")val lines= source.getLines 如果需要将文件读成一个字符串,则可以使用source.mkString 正则表达式""" """在sca原创 2015-09-15 11:10:58 · 373 阅读 · 0 评论 -
scala学习笔记(十七) Actor
Actor模型框架是我最早学习scala的主要目标,通过actor消息驱动式编程可以更加方便的实行各种多线程与异步处理。 package demo importjava.awt.image.BufferedImageimportscala.collection.mutable.ArrayBufferimportscala.util.Randomimportcom.typ原创 2015-09-21 14:57:19 · 448 阅读 · 0 评论