黑马程序员技术交流社区

标题: 【广州校区】+【原创】Scala入门 [打印本页]

作者: 余大麻    时间: 2019-1-3 15:31
标题: 【广州校区】+【原创】Scala入门
一、Scala简述二、Scala安装与配置A. Windows系统安装
[Scala] 纯文本查看 复制代码
SCALA_HOME= D:\scala-2.11.8

在PATH变量中添加 : %SCALA_HOME%\bin

[Scala] 纯文本查看 复制代码
scala -version
"或者"
scala
"进去交互模式"


B. 配置IDEA三、 不同编程语言比较A. 不同编程语言的最小单元
[Scala] 纯文本查看 复制代码
"java"
class A{
    public static void main(String[] args) {
        System.out.println("HelloWorld!");
    }
}

"c#"
namespace
{
    class A
    {
        void Main(string[] args)
        {
            Console.write("Hello World")
        }
    }
}

"python"
print("Hello World")

"Scala"
println("Hello world")

"Node.js"
document.write("Hello World")


四、 Scala基础A. Hello Scala
[AppleScript] 纯文本查看 复制代码
object HelloWorld {
  def main(args: Array[String]): Unit = {
   println("Hello Scala!")
  }
}

上面代码如果想打包在jvm上运行,我们通过maven的package
[AppleScript] 纯文本查看 复制代码
C:\Users\unkonw_yu\Desktop\scala>scala -cp scala_syllabus-1.0-SNAPSHOT.jar HelloWorld

B. 声明值和变量
[Scala] 纯文本查看 复制代码
scala> val a1 = 10
scala> a1 = 20(此处会报错,因为val不允许初始化后再次修改a1变量的引用)


[Scala] 纯文本查看 复制代码
scala> var a2 = 10
scala> a2 = 20


尖叫提示:
[Scala] 纯文本查看 复制代码
var a: Int = 10
println(a)

C. 常用类型D. 常用类型结构图F. 调用函数与方法(函数一定有返回值,方法不一定)
[Scala] 纯文本查看 复制代码
scala> import scala.math._
scala> sqrt(100)

[Scala] 纯文本查看 复制代码
object UseFunction {
    def main(args: Array[String]): Unit = {
        import scala.math.sqrt
        val a = sqrt(100)
        println(a)
    }
}

[Scala] 纯文本查看 复制代码
scala> "HelloWorld".distinct

apply与update方法
[Sass] 纯文本查看 复制代码
"Hello"(4)  等同于  "Hello".apply(4)
Array(1,2,3) 等同于 Array.apply(1,2,3)
// int[] arr = new int[]{1,2,3,4,5};
// var arr = Array(1,2,3,4,5)

如:
println("Hello"(4))
println("Hello".apply(4))

val arr1 = Array(1, 2, 3, 4)
val arr2 = Array.apply(1, 2, 3, 4)
println(arr1.mkString(" ")) // 1 2 3 4
println(arr2.mkString(" ")) // 1 2 3 4

[Scala] 纯文本查看 复制代码
class Array {
   
}
object Array {
    def apply() {
        return new Array();
    }
}


[Scala] 纯文本查看 复制代码
arr(4) = 5  等同于  arr.update(4,5)
如:
val arr1 = Array(1, 2, 3, 4)
val arr2 = Array.apply(1, 2, 3, 4)
arr1(1) = 5
arr2.update(1, 5)
println(arr1.mkString(" ")) // 1 5 3 4
println(arr2.mkString(" ")) // 1 5 3 4

option类型(有2个类: Some 和 None)
[Scala] 纯文本查看 复制代码
val map1 = Map("Alice" -> 20, "Bob" -> 30)
println(map1.get("Alice"))
println(map1.get("Jone"))


[Scala] 纯文本查看 复制代码
val map = Map("name" -> "余浩宏", "age" -> "11")
println(map.get("name"))      //Some(余浩宏)
println(map.get("name").get)  //余浩宏
println(map("name"))          //余浩宏
println(map.get("gender"))    //None
println(map("xxx"))           //报错


五、控制结构和函数A. if else表达式
[Scala] 纯文本查看 复制代码
// 可以返回任意类型
val a = 10
val desc = if (a >= 10) {
    "a 大于 10"
} else {
    "a 小于 10"
}
println(desc)

// 只能返回指定类型
val b = 10
val desc_type : String = if (b >= 10) "b 大于 10" else "b 小于 10"


B. while表达式(无返回值)
[Scala] 纯文本查看 复制代码
// 2. while
val result = while (a < 10) {
    println("a的值是 :" + a)
    a += 1
}
println("result = " + result) // ()


[Scala] 纯文本查看 复制代码
do{
    println("a的值是 :" + a)
    a -= 1
}while(a > 5)


while循环的中断
[Scala] 纯文本查看 复制代码
import scala.util.control.Breaks
val loop = new Breaks
loop.breakable({
    while(n <= 20){
        n += 1;
        if(n == 18){
            loop.break()
        }
    }
})
println(n)























欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2