• Scala简介及基础语法


    一、scala简介
        官网:https://www.scala-lang.org/
        Scala语言很强大,集成了面向对象和函数式编程的特点。
        运行在JVM(jdk)。
        大数据中为什么学习scala?
        spark是scala语言编写。
        python写spark 挺好的
        java写spark 很糟糕(代码实在是太多了)
        scala写spark 很完美
        
    二、scala特点
        1)优雅
        框架设计中第一个要考虑的问题就是API是否优雅。
        精简的封装。
        代码精简(少)。
        2)速度快
        scala语言表达能力强。
        一行代码=多行java代码,开发速度快。
        3)完美融合hadoop生态
        scala是静态编译,表达能力强并且代码量少。
    
    三、安装Scala
        1)下载scala-2.11.8.zip
        2)解压到E:	emp目录下
        3)配置环境变量
        SCALA_HOME=E:	empscala-2.11.8
        PATH中加入%SCALA_HOME%in;
    
    四、Scala基础语法
        1)Scala程序的开始HelloWorld
        object HelloWorld {
            def main(args: Array[String]): Unit = {
                println("Hello, world!")
            }
        }
        
        2)Scala的数据类型
        Scala与java一样,有8种数值类型:
        Byte/Char/Short/Int/Long/Float/Double/Boolean/
        和Unit类型(void)
        注意:scala中无包装类型。
        Unit:表示无值,用于不返回任何结果的方法的结果类型。
        
        3)Scala定义变量
        两个关键字:val var
        val:定义变量值不可变
        var:定义的变量值是可变的
        scala编译器会自动的推断类型!
        指定类型: val str:String = "Hello World"
        注意:类型要保持一致
        Unit = ():()相当于什么都没有用()表示。
        
        4)条件表达式
        if:判断
        val y = if(x>0) 1 else 2
        
        scala> val z = if(x>0) "error" else 1
        z: Any = error
        
        Any:包含Anyval和AnyRef
        Anyval:包含scala所有类型
        AnyRef:Scala classes与Java Classes
        Any相当于java的Object
        val k = if(x<0) 0 else if(x>=1) 1 else -1
        if和else if:多个条件的判断,符合条件看左侧,不符合条件看右侧
        
        5)块表达式
        在scala中{}包含一系列表达式,块中的最后一个表达式的值就是块的值
        例如:
        def main(args: Array[String]): Unit = {
            //块表达式
            val a = 1
    
            val rs = {
                if(a > 2){
                    1
                }else if (a < 2){
                    -1
                }else{
                    0
                }
            }
            println(rs)
        }
        
        6)循环
        yield:生成一个新的集合关键字
        1.to(10).map(_*1000)
        map:取出元素
        _:代表元祖

    循环的一些例子:

    //1、循环得到1到10
    scala> 1 to 10
    res7: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
    //2、循环换行输出1到10
    scala> for(i <- res7) println(i)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    //3、循环不换行输出1到10
    scala> for (i <- res7) print(i)
    12345678910
    
    //4、定义变量接收循环得到的数字1到10
    scala> val rs = 1 to 10
    rs: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
    //5、循环换行输出1到10
    scala> for(x <- rs) println(x)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    //6、定义一个数组
    scala> val arr = Array(1,3,5)
    arr: Array[Int] = Array(1, 3, 5)
    
    //7、循环换行输出数组的值
    scala> for (i <- arr) println(i)
    1
    3
    5
    
    //8、按要求循环换行输出值
    scala> for(i <- 1 to 10;j <- 1 to 5 if i != j) print((10*i+j) + " ")
    12 13 14 15 21 23 24 25 31 32 34 35 41 42 43 45 51 52 53 54 61 62 63 64 65 71 72 73 74 75 81 82 83 84 85 91 92 93 94 95 101 102 103 104 105
    
    //9、使用yield生成一个新的集合
    scala> for(i <- 1 to 10) yield i*10
    res14: scala.collection.immutable.IndexedSeq[Int] = Vector(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
    
    //10、使用to方法得到1到10
    scala> 1.to(10)
    res15: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
    //11、使用to方法和map方法得到预期的结果
    scala> 1.to(10).map(_*1000)
    res16: scala.collection.immutable.IndexedSeq[Int] = Vector(1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000)
    
    //12、使用yield生成一个新的集合
    scala> val a1 = for(i <- 1 to 10;if(i%2 == 0)) yield i
    a1: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4, 6, 8, 10)
  • 相关阅读:
    C
    A
    G
    B
    一些新玩意:
    Angular常用功能
    node学习笔记(四)
    node学习笔记(三)
    node学习笔记(二)
    node学习笔记
  • 原文地址:https://www.cnblogs.com/areyouready/p/10202412.html
Copyright © 2020-2023  润新知