scala
半吊子全栈工匠
半吊子全栈工匠一枚
展开
-
scala 简要: Actor
actor提供了并发程序中与传统的基于锁的结构不同的另一种选择,通过尽可能避免锁和共享状态,actor更容易地设计出正确、没有死锁或争用状况的程序。Scala提供了actor的简单实现,akka(http://akka.io)提供了高级actor类库。每个actor都要扩展Actor类并重写Act方法,actor是处理异步消息的对象,消息可以是任何对象,通过!操作符发送消息,例如:actorX !原创 2015-01-03 07:25:29 · 1942 阅读 · 0 评论 -
scala简要:文件访问
scala.io.source对象的getlines方法可以读取文件的所有行,可以把source对象当成迭代器读取文件中的每个字符,java.util.Scanner来处理同事包含文本和数字的文件。 从URL中读取时,需要事先知道编码格式,scala中没有提供读取二进制文件的方法,需要使用Java类库,同样没有内建的对写入文件的支持,可使用java.io.PrintWriter,访问目录也要用java......原创 2015-01-02 09:56:56 · 3038 阅读 · 0 评论 -
scala 简要:再拾Scala
Spark 1.2 发布了,核心部分是scala写的, 需要重新回顾一下Scala了,写一点札记... Scala 运行于JVM之上,拥有海量类库和工具,兼顾函数式编程和面向对象。 在Scala中, 解释器就是我们喜欢的REPL,变量或者函数的类型总是写在变量或函数的后面(与java相反),数值类型的转换通过方法而不是强制类型转换,仅当同一行代码存在多条语句时才需要用分号隔开。scala 允许自定义操作符,注意有分寸地使用,在使用scala.开头的包时,可以省去scala前缀。 scala没有静态方法原创 2014-12-27 10:39:08 · 1585 阅读 · 0 评论 -
scala简要:类与对象
在scala中,类并不声明为public,源文件可以包含多个类,所有这些类都具有共有可见性。 对每个字段都提供了getter和setter方法,分别叫做 字段名 和 字段名_,可重新自定义。 1)如果字段私有,则getter和setter也是私有的 2)如果字段val,则只有getter方法 3)如果不需任何getter和setter,可将字段声明为private[this]将scala字段...原创 2014-12-28 10:28:01 · 3218 阅读 · 0 评论 -
scala简要:包
Scala中的包与java包或c++命名空间的目的相同,但可以在同一文件中为多个包贡献内容。 尽量使用完整包名,避免使用scala,java,com,org等来命名嵌套的包。串联式包语句可以限定可见的包。 包可以包含类,对象和属性,但不能包含函数和变量的定义,在实现上,包对象被编译成带有静态方法和字段的JvM类。 通过修饰符同样可以达到public,private或protected的效果。在scala中......原创 2015-01-01 21:01:23 · 1442 阅读 · 0 评论 -
scala简要: 继承
scala扩展类同样是使用extends关键字,重写一个非抽象方法必须使用override修饰符,用isInstanceOf方法判断某个对象是否属于某个特定的类,只有主构造器可以调用超类的构造器。 字段重写时的限制: -def 只能重写另一个def -val只能重写另一个val或不带参数的def -var只能重写另一个抽象的var构造顺序问题的根本原因——java允许在超类的构造方法中调用子类的方法 ......原创 2015-01-01 21:08:02 · 1519 阅读 · 0 评论 -
scala简要:操作符和解析器
变量、函数、类等的名称统称为标识符,反引号中可以包含几乎任何字符序列。 在scala中,除了-以冒号:结尾的操作符-赋值操作符所有操作符都是左结合的。unapply方法接受一个对象,然后从中取值,通常是当初用来构造该对象的值。要取任意长度的值的序列,一般用unapplySeq命名方法。 Scala解析器库是scala语言总内嵌领域特定语言(DSL)的高级示例。为了使用Scala解析库,需提供一个扩展......原创 2015-01-02 10:17:30 · 3123 阅读 · 0 评论 -
scala 简要:集合
Scala中所有集合都是iterable的,seq是有先后次序的序列(如数组和列表),Set是没有先后次序的序列,map是一种键值对偶。scala优先采用不可变集合,::操作符从给定的头和尾创建一个新的列表。如果要把列表中的某个节点变成列表中的最后一个节点,不能将next引用设为nil,而应该设为LinkedList.empty. 已排序的集使用红黑树实现的,scala2.9没有可变的已排序集,要用到java.......原创 2015-01-02 14:03:21 · 1399 阅读 · 0 评论 -
scala简要:模式匹配
与switch语句不同,scala模式匹配没有break的问题。如果case中的判断不能匹配,则捕获所有的模式来尝试匹配。 变量模式可能与常量表达式冲突,变量必须以小写字母开头。如果有一个小写字母开头的常量,则需要把它抱在反引号中。 在类型匹配的时候,必须给出一个变量名,否则会拿对象本身来进行匹配。由于匹配发生在运行时,Jvm中泛型的类型信息是被擦掉的,所有不能用类型来匹配特定的Map类型。正则表达式是......原创 2015-01-02 14:47:09 · 1575 阅读 · 0 评论 -
scala简要:注解
注解可以在程序的各个条目中添加信息,是插入到代码中以便有工具可以对他们进行处理的标签。可以对是scala类使用java注解,也可以使用scala特有的注解。 在scala中,可为类,方法,字段,局部变量和参数添加注解。Java注解的参数类型只能是: 1)数值型变量 2)字符串 3)类变量 4)java枚举 5)其他注解 6)上述类型的数组。如果要实现一个新的Java注解,则需要用Java来编写该注解类......原创 2015-01-02 14:55:38 · 3479 阅读 · 0 评论 -
scala 简要: xml处理
Scala提供了对xml的内建支持,可以用scala.xml.Elem的值表示一个XML元素。Node类是所有xml节点类型的父类,Elem类描述xml元素。要处理某个元素的属性键和值,可以用attributes属性,然后用()来访问定键的值 ,使用循环或asAttrMap方法遍历所有属性。内嵌的字符串会被转成Atom[String]节点,所以可在xml中包含scala代码,被内嵌的scala代码原创 2015-01-02 17:35:35 · 3753 阅读 · 0 评论 -
scala简要:高级函数和高级类型
在scala中,函数是头等公民,可以用变量存储函数,可以使用匿名函数,和带参数的函数。 如果需要一个序列的值,一般从一个简单序列转化得出。 函数可以在变量不再作用域内时被调用,这样的函数叫闭包。 柯里化是指将原来接受两个参数变成接受一个参数的函数的过程。不需要用return语句来返回函数值,函数的返回值就是函数体的值。 scala中......原创 2015-01-02 19:43:22 · 2832 阅读 · 0 评论 -
scala 简要:数组与映射
Scala中的Array是定长数组,ArrayBuffer是变长数组,对应于Java中的ArrayList,C++中的Vector,可以用相同的代码处理这两种数据结构,用for (i由于Scala数组是用java数组实现的,可以在java和scala之间传递...... scala中,映射是对偶的集合,可以看做将...原创 2014-12-27 15:50:15 · 2296 阅读 · 0 评论