Scala提供了对xml的内建支持,可以用scala.xml.Elem的值表示一个XML元素。Node类是所有xml节点类型的父类,Elem类描述xml元素。要处理某个元素的属性键和值,可以用attributes属性,然后用()来访问定键的值 ,使用循环或asAttrMap方法遍历所有属性。内嵌的字符串会被转成Atom[String]节点,所以可在xml中包含scala代码,被内嵌的scala代码...
分类:
其他好文 时间:
2015-01-02 18:48:03
阅读次数:
180
与switch不同,scala模式匹配没有break的问题。如果case中的判断不能匹配,则捕获所有的模式来尝试匹配。变量模式可能与常量表达式冲突,变量必须以小写字母开头。如果有一个小写字母开头的常量,则需要把它抱在反引号中。在类型匹配的时候,必须给出一个变量名,否则会拿对象本身来进行匹配。由于匹配发生在运行时,Jvm中泛型的类型信息是被擦掉的,所有不能用类型来匹配特定的Map类型。正则表达式是适...
分类:
其他好文 时间:
2015-01-02 16:08:52
阅读次数:
180
注解可以在程序的各个条目中添加信息,是插入到代码中以便有工具可以对他们进行处理的标签。可以对是scala类使用java注解,也可以使用scala特有的注解。在scala中,可为类,方法,字段,局部变量和参数添加注解。Java注解的参数类型只能是:1)数值型变量2)字符串3)类变量4)java枚举5)其他注解6)上述类型的数组。如果要实现一个新的Java注解,则需要用Java来编写该注解类。scal...
分类:
其他好文 时间:
2015-01-02 16:08:00
阅读次数:
199
所有集合都是iterable的,seq是有先后次序的序列(如数组和列表),Set是没有先后次序的序列,map是一种键值对偶。scala优先采用不可变集合,::操作符从给定的头和尾创建一个新的列表。如果要把列表中的某个节点变成列表中的最后一个节点,不能将next引用设为nil,而应该设为LinkedList.empty.已排序的集使用红黑树实现的,scala2.9没有可变的已排序集,要用到java....
分类:
其他好文 时间:
2015-01-02 14:41:20
阅读次数:
208
scala.io.source对象的getlines方法可以读取文件的所有行,可以把source对象当成迭代器读取文件中的每个字符,java.util.Scanner来处理同事包含文本和数字的文件。从URL中读取时,需要事先知道编码格式,scala中没有提供读取二进制文件的方法,需要使用Java类库,同样没有内建的对写入文件的支持,可使用java.io.PrintWriter,访问目录也要用jav...
分类:
其他好文 时间:
2015-01-02 11:04:55
阅读次数:
158
变量、函数、类等的名称统称为标识符,反引号中可以包含几乎任何字符序列。在scala中,除了-以冒号:结尾的操作符-赋值操作符所有操作符都是左结合的。unapply方法接受一个对象,然后从中取值,通常是当初用来构造该对象的值。要取任意长度的值的序列,一般用unapplySeq命名方法。 Scala解析器库是scala语言总内嵌领域特定语言(DSL)的高级示例。为了使用Scala解析库,需提供一个扩展...
分类:
其他好文 时间:
2015-01-02 11:02:34
阅读次数:
115
scala扩展类的方式同样是使用extends关键字,重写一个非抽象方法必须使用override修饰符,用isInstanceOf方法判断某个对象是否属于某个特定的类,只有主构造器可以调用超类的构造器。字段重写时的限制:-def 只能重写另一个def-val只能重写另一个val或不带参数的def-var只能重写另一个抽象的var构造顺序问题的根本原因——java允许在超类的构造方法中调用子类的方法...
分类:
其他好文 时间:
2015-01-01 21:17:43
阅读次数:
174
Scala中的包与java包或c++命名空间的目的相同,可以在同一文件中为多个包贡献内容。尽量使用完整包名,避免使用scala,java,com,org等来命名嵌套的包。串联式包语句可以限定可见的包。包可以包含类,对象和属性,但不能包含函数和变量的定义,在实现上,包对象被编译成带有静态方法和字段的JvM类。通过修饰符同样可以达到public,private或protected的效果。在scala中...
分类:
其他好文 时间:
2015-01-01 21:16:58
阅读次数:
203
package xzxz
import scala.annotation.tailrec
class MersenneTwister(seed: Int) {
private val SIZE: Int = 624
private val PERIOD: Int = 397
private val DIFF: Int = SIZE - PERIOD
private de...
分类:
编程语言 时间:
2015-01-01 21:16:02
阅读次数:
309
代码1 object HelloWorld {2 def main(args: Array[String]): Unit = {3 println("Hello world") 4 }5 }解说object关键字相当于static(更确切的说法是单例模式的一种语言层面...
分类:
其他好文 时间:
2015-01-01 21:07:39
阅读次数:
197