
Scala
guohecang
数据为王时代,让大数据释放大价值
展开
-
Scala学习笔记1 - 基础
本文档针对scala 2.10.x,由于scala目前发展迅速,因此可能会和其他版本的不同。===概述 scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。 scala是纯粹的面向对象的语言。java虽然是面向对象的语言,但是它不是纯粹的,因为java的基本数据类型不是类,并且在原创 2016-08-04 11:47:42 · 1325 阅读 · 1 评论 -
Scala学习笔记12 - GUI编程
===GUI编程 scala图形用户界面编程可以使用scala.swing库,该库提供了对java的Swing框架的GUI类的访问,对其进行包装,隐藏了大部分复杂度。示例如下: object MyScalaGUI extends SimpleSwingApplication { deftop = new MainFrame {原创 2016-08-04 11:58:21 · 1640 阅读 · 0 评论 -
Scala学习笔记11 - Actor和并发
===Actor和并发 与java的基于共享数据和锁的线程模型不同,scala的actor包则提供了另外一种不共享任何数据、依赖消息传递的模型。设计并发软件时,actor是首选的工具,因为它们能够帮助你避开死锁和争用状况,这两种情形都是在使用共享和锁模型时很容易遇到的。 创建actor: actor是一个类似于线程的实体,它有一个用来接收消息的邮箱。实现acto原创 2016-08-04 11:57:58 · 1587 阅读 · 0 评论 -
Scala学习笔记10 - scala I/O
===scala I/O 由于scala可以和java互操作,因此目前scala中的I/O类库并不多,你可能需要使用java中的I/O类库。下面介绍scala中有的东东: scala.Console对象可以用于终端输入输出,其中终端输入函数有:readLine、readInt、readChar等等,终端输出函数有:print、println、printf等等。其实原创 2016-08-04 11:57:22 · 612 阅读 · 0 评论 -
Scala学习笔记9 - 包和引用
===包和引用打包: scala的代码采用了java平台完整的包机制。你可以使用两种方式把代码放进包里: ① 使用放在文件顶部的package子句来把整个文件放入包中; ② 使用package子句把要放入到包中的代码用花括号括起来,这种方式像C#的命名空间。使用这种方式,你可以定义出嵌套的包,注意:scala的包可以嵌套,java则不可以。任何你自原创 2016-08-04 11:56:41 · 843 阅读 · 0 评论 -
Scala学习笔记9 - 异常和断言、检查
===异常 scala的异常工作机制与java的类似,但也有区别。区别如下: ① scala没有“受检”异常——你不需要声明函数或方法可能会抛出某种异常。 ② throw表达式是有值的,其值是Nothing类型。 ③ try-catch-finally表达式也是有值的,但是情况有些特殊。当没有抛出异常时,try子句为表达式值;如果抛出异原创 2016-08-04 11:55:22 · 1447 阅读 · 0 评论 -
Scala学习笔记8 - 集合
===集合 scala的集合(collection)库分为可变(mutable)类型与不可变(immutable)类型。以Set为例,特质scala.collection.immutable.Set和scala.collection.mutable.Set都扩展自scala.collection.Set。 scala集合的顶层抽象类和特质: scala.coll原创 2016-08-04 11:54:45 · 681 阅读 · 0 评论 -
Scala学习笔记7 - 类型参数化
===类型参数化 在scala中,类型参数化(类似于泛型)使用方括号实现,如:Foo[A],同时,我们称Foo为高阶类型。如果一个高阶类型有2个类型参数,则在声明变量类型时可以使用中缀形式来表达,此时也称该高阶类型为中缀类型,示例如下: class Foo[A,B] val x:Int Foo String = null原创 2016-08-04 11:54:05 · 1508 阅读 · 0 评论 -
Scala学习笔记6 - 隐式转换和隐式参数
===显式类型转换 正如之前所述的,scala中类型转换使用方法实现,以下是显式类型测试和显式类型转换的示例: a.isInstanceOf[String] // 显式类型测试 a.asInstanceOf[String] // 显式类型转换 ===隐式转换、隐式参数隐式转换: 隐式转换只是普原创 2016-08-04 11:53:33 · 810 阅读 · 0 评论 -
Scala学习笔记5 - 特质
===特质(trait) 特质相当于接口,不能被实例化。特质定义使用trait关键字,与类相似,你同样可以在其中定义而不仅是声明字段和方法等。你可以使用extends或with将多个特质“混入”类中。注意当在定义特质时,使用extends指定了特质的超类,那么该特质就只能混入扩展了指定的超类的类中。 特质与类的区别在于:①特质不能带有“类参数”,也即传递给主构造器的参数原创 2016-08-04 11:52:30 · 734 阅读 · 0 评论 -
Scala学习笔记4 - 继承与覆盖
===继承与覆盖(override)继承: 继承时,如果父类主构造器带有参数,子类需要把要传递的参数放在父类名之后的括号里即可,如下: class Second(a: Int, b: Int) extends First(a){…} scala继承层级: 如上图所示:Any是所有其他类的超类。Null是所有引用类原创 2016-08-04 11:51:39 · 1172 阅读 · 0 评论 -
Scala学习笔记3 - 类和对象
===类(class)和对象(object)类(class)和构造器: 类的定义形式如下: class MyClass(a: Int, b: Int) { println(a.toString) } 在scala中,类也可以带有类参数,类参数可以直接在类的主体中原创 2016-08-04 11:49:37 · 1361 阅读 · 0 评论 -
Scala学习笔记2 - 控制结构和函数
===控制结构 scala和其他编程语言有一个根本性差异:在scala中,几乎所有构造出来的语法结构都有值。这个特性使得程序结构更加精简。scala内建的控制结构很少,仅有if、while、for、try、match和函数调用等而已。如此之少的理由是,scala从语法层面上支持函数字面量。if表达式: scala的if/else语法结构与java等一样,但是原创 2016-08-04 11:48:51 · 1108 阅读 · 0 评论 -
Scala学习笔记13 - 结合scala和java
===结合scala和java scala和java高度兼容,因此可以进行互操作,大多数情况下结合这两种语言时并不需要太多顾虑,尽管如此,有时你还是会遇到一些结合java和scala的问题。基本上,scala使用java代码相对于java使用scala代码更容易一些。 scala代码如何被翻译: scala的实现方式是将代码翻译为标准的java字节码。scala原创 2016-08-04 11:59:01 · 2073 阅读 · 0 评论