1.前言

近期在參加Hadoop和Spark培训。须要使用Scala,自学了一下作为入门。这里作一个记录。

2.下载

1) 在scala官网下载。地址: http://www.scala-lang.org/

2) 下载IDE。地址: http://scala-ide.org/

3)配置环境变量

SCALA_HOME:C:\Program Files (x86)\scala

Path:C:\Program Files (x86)\scala\bin

在命令行中能够測试scala是否正常安装。

3.Hello Word

IDE 事实上就是一个Eclipse的开发环境,大家都非常熟悉了。新建project->新建类就可以!

能够发现,jre都是本地的,这也说明了scala是能够直接执行在JVM上的。

scala也能够直接在交互式shell环境下执行(如命令行图所看到的),这也是scala非常大的一个优势。

4.基本样例

1)变量的使用

object Hello {
def main(args: Array[String]) {
var a = 1;
var b = 2;
var c = a + b;
println("c = " + c);
}

var 说明编译器能够做类型判断,字符和数字使用"+"连接成字符串。

2)循环

var i = 0;
// for loop execution with a range
for( i <- 1 to 3){
println( "Value of i: " + i );

唯一的差别在于符号 <-

3) 集合

var index = 0;
val numList = List(1,2,3,4,5,6); // for loop execution with a collection
for( index <- numList ){
println( "Value of index: " + index );
}

4)函数

def printMe() : Unit = {
println("Hello, Scala!")
} def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}

由參数和无參数的形式,感受一下!

5)调用同一个包以下的类

class Yiibai(xc: Int, yc: Int) {
var x: Int = xc
var y: Int = yc def move(dx: Int, dy: Int) {
x = x + dx
y = y + dy
println ("Yiibai x location : " + x);
println ("Yiibai y location : " + y);
}
}

在main函数里面调用:

val pt = new Yiibai(10, 20);
pt.move(10, 10);

6) Tuples

val pair = (99, "Luftballons")
println(pair._1)
println(pair._2)

注意訪问形式

7)类的继承

trait Friendly {
def greet() = "Hi"
} class Dog extends Friendly {
override def greet() = "Woof"
} class HungryDog extends Dog {
override def greet() = "I'd like to eat my own dog food"
} trait ExclamatoryGreeter extends Friendly {
override def greet() = super.greet() + "!"
} var pet: Friendly = new Dog
println(pet.greet()) pet = new HungryDog
println(pet.greet()) pet = new Dog with ExclamatoryGreeter
println(pet.greet()) pet = new HungryDog with ExclamatoryGreeter
println(pet.greet())

输出:

Woof
I'd like to eat my own dog food
Woof!
I'd like to eat my own dog food!

8)Trait

相似Java interface, 但能够定义方法体!

trait Friendly {
def greet() = "Hi"
} class Dog extends Friendly {
override def greet() = "Woof"
}

9)异常

import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException object Test {
def main(args: Array[String]) {
try {
val f = new FileReader("input.txt")
} catch {
case ex: FileNotFoundException =>{
println("Missing file exception")
}
case ex: IOException => {
println("IO Exception")
}
}
}
}

输出:

C:/>scalac Test.scala
C:/>scala Test
Missing file exception C:/>

10)文件

写文件

import java.io._

object Test {
def main(args: Array[String]) {
val writer = new PrintWriter(new File("test.txt" )) writer.write("Hello Scala")
writer.close()
}
}

读文件

import scala.io._
Source.fromFile(new java.io.File("cn.scala")).getLines().foreach(println)

5.总结

scala 在大数据,云计算方面有较为广泛的运用,学习一下还是挺实用的。欢迎大家一起分享讨论。

最新文章

  1. git revert和reset区别
  2. jQuery中width、innerWidth、outerWidth的区别
  3. gdb 定位 oops call trace
  4. HTML问题集锦
  5. 中国Linux源镜像站大全
  6. 密码学——网间数据加密传输全流程(SSL加密原理)
  7. 安装CAD出现Error 1904.Module的解决方法
  8. C++基础知识---static const初始化成员变量
  9. crontab 详细用法 定时任务
  10. redis介绍、安装、redis持久化、redis数据类型
  11. 一文让你彻底理解 Java NIO 核心组件
  12. php 安装redis
  13. Extjs 在项目中碰到问题
  14. jenkins之从0到1利用Git和Ant插件打war包并自动部署到tomcat(第五话):总结以及build.xml文件
  15. LeetCode295-Find Median from Data Stream &amp;&amp; 480. 滑动窗口中位数
  16. WPF MessageContract DataContract
  17. postgresql 表空间创建、删除
  18. 从页面到服务器,node实现文件下载
  19. ThinkPHP 配置详解
  20. IntelliJ IDEA 注册码及相关资源

热门文章

  1. pycharm配置 自动运行指定脚本
  2. javascript学习笔记 - 引用类型 Array
  3. javascript基础 方法
  4. web结对项目
  5. HDU2013 蟠桃记【递推】
  6. 二进制&lt;2&gt;
  7. CSS3的writing-mode属性
  8. 对于quartz的控制台不断打印
  9. Entity Framework表名默认自动变为复数形式等常见问题解决方法
  10. 【NOIP2015】子串(字符串DP)