Scala 基础入门教程

    xiaoxiao2021-03-25  85

    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)变量的使用

    [java] view plain copy object Hello {    def main(args: Array[String]) {        var a = 1;        var b = 2;        var c = a + b;        println("c = " + c);  }   var 说明编译器可以做类型推断,字符和数字使用"+"连接成字符串。

    2)循环

    [html] view plain copy var i = 0;  // for loop execution with a range  for( i <- 1 to 3){      println( "Value of i: " + i );  }   唯一的区别在于符号 <-

    3) 集合

    [html] view plain copy 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)函数 [html] view plain copy def printMe() : Unit = {       println("Hello, Scala!")  }      def addInt( a:Int, b:Int ) : Int = {       var sum:Int = 0       sum = a + b       return sum   }   由参数和无参数的形式,感受一下!

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

    [java] view plain copy 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函数里面调用: [java] view plain copy val pt = new Yiibai(1020);  pt.move(1010);   6) Tuples [html] view plain copy val pair = (99, "Luftballons")  println(pair._1)  println(pair._2)   注意访问形式

    7)类的继承

    [java] view plain copy 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())   输出: [java] view plain copy Woof  I'd like to eat my own dog food  Woof!  I'd like to eat my own dog food!   8)Trait

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

    [java] view plain copy trait Friendly {    def greet() = "Hi"  }    class Dog extends Friendly {    override def greet() = "Woof"  }   9)异常 [java] view plain copy 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")           }        }     }  }   输出: [html] view plain copy C:/>scalac Test.scala  C:/>scala Test  Missing file exception    C:/>   10)文件

    写文件

    [java] view plain copy import java.io._    object Test {     def main(args: Array[String]) {        val writer = new PrintWriter(new File("test.txt" ))          writer.write("Hello Scala")        writer.close()     }  }   读文件 [java] view plain copy import scala.io._  Source.fromFile(new java.io.File("cn.scala")).getLines().foreach(println)   5.总结scala 在 大数据, 云计算方面有较为广泛的运用,学习一下还是挺有用的,欢迎大家一起分享讨论。
    转载请注明原文地址: https://ju.6miu.com/read-40724.html

    最新回复(0)