你好,游客 登录
背景:
阅读新闻

Scala 基础入门教程

[日期:2018-09-03] 来源:csdn  作者:feng1456 [字体: ]

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的开发环境,大家都很熟悉了。新建工程->新建类即可!

可以发现,jre都是本地的,这也说明了scala是可以直接运行在JVM上的。scala也可以直接在交互式shell环境下运行(如命令行图所示),这也是scala很大的一个优势。

4.基本例子

1)变量的使用

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

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

2)循环

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

唯一的区别在于符号 <-

3) 集合

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

4)函数

  1. def printMe() : Unit = {
  2. println("Hello, Scala!")
  3. }
  4.  
  5. def addInt( a:Int, b:Int ) : Int = {
  6. var sum:Int = 0
  7. sum = a + b
  8. return sum
  9. }

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

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

  1. class Yiibai(xc: Int, yc: Int) {
  2. var x: Int = xc
  3. var y: Int = yc
  4.  
  5. def move(dx: Int, dy: Int) {
  6. x = x + dx
  7. y = y + dy
  8. println ("Yiibai x location : " + x);
  9. println ("Yiibai y location : " + y);
  10. }
  11. }

在main函数里面调用:

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

6) Tuples

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

注意访问形式

7)类的继承

  1. trait Friendly {
  2. def greet() = "Hi"
  3. }
  4.  
  5. class Dog extends Friendly {
  6. override def greet() = "Woof"
  7. }
  8.  
  9. class HungryDog extends Dog {
  10. override def greet() = "I'd like to eat my own dog food"
  11. }
  12.  
  13. trait ExclamatoryGreeter extends Friendly {
  14. override def greet() = super.greet() + "!"
  15. }
  16.  
  17. var pet: Friendly = new Dog
  18. println(pet.greet())
  19.  
  20. pet = new HungryDog
  21. println(pet.greet())
  22.  
  23. pet = new Dog with ExclamatoryGreeter
  24. println(pet.greet())
  25.  
  26. pet = new HungryDog with ExclamatoryGreeter
  27. println(pet.greet())

输出:

  1. Woof
  2. I'd like to eat my own dog food
  3. Woof!
  4. I'd like to eat my own dog food!

8)Trait

类似Java interface, 但可以定义方法体!

  1. trait Friendly {
  2. def greet() = "Hi"
  3. }
  4.  
  5. class Dog extends Friendly {
  6. override def greet() = "Woof"
  7. }

9)异常

  1. import java.io.FileReader
  2. import java.io.FileNotFoundException
  3. import java.io.IOException
  4.  
  5. object Test {
  6. def main(args: Array[String]) {
  7. try {
  8. val f = new FileReader("input.txt")
  9. } catch {
  10. case ex: FileNotFoundException =>{
  11. println("Missing file exception")
  12. }
  13. case ex: IOException => {
  14. println("IO Exception")
  15. }
  16. }
  17. }
  18. }

输出:

  1. C:/>scalac Test.scala
  2. C:/>scala Test
  3. Missing file exception
  4.  
  5. C:/>

10)文件

写文件

  1. import java.io._
  2.  
  3. object Test {
  4. def main(args: Array[String]) {
  5. val writer = new PrintWriter(new File("test.txt" ))
  6.  
  7. writer.write("Hello Scala")
  8. writer.close()
  9. }
  10. }

读文件

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

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

收藏 推荐 打印 | 阅读: