zoukankan      html  css  js  c++  java
  • Scala 基础新手教程

    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)scalain

    在命令行中能够測试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 在大数据,云计算方面有较为广泛的运用,学习一下还是挺实用的。欢迎大家一起分享讨论。














  • 相关阅读:
    openssh升级
    Mysql基础学习_Windows版(一)
    centos7 取消Ctrl+Alt+Del重启功能
    linux shell数值比较和字符串比较
    linux 使用中括号进行条件判断
    VXLAN简介(摘抄)
    centos配置NTP服务器
    Centos配置网卡子接口
    组播___IGMP
    组播
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7364446.html
Copyright © 2011-2022 走看看