• Scala的简单语法介绍


    变量声明

    //在Scala中val用于定义常量,var用于定义变量
    var var_i = 1
    var_i += 1
    
    val val_i = 1
    val_i += 1
    val_i = 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行结果如下:
    在这里插入图片描述
    可以看到,常量是初始复制就确定了,不能修改和重新复制,因为常量会比变量的执行速度等快,所以能定义常量的地方就定义常量。

    Scala中也有数据类型的概念:
    数据类型表达:变量名:数据类型。
    声明时如果不明确写出数据类型,系统会自动判断。

    var var_i:Float = 1
    
    • 1

    执行结果如下
    在这里插入图片描述

    语句块

    Scala的语句块拥有返回值,这也是为什么Scala语句比较简短的原因之一。
    例如:

    val i = {val a=3; val b=4; a+b}
    
    • 1

    在这里插入图片描述
    每次都会返回语句块中最后一段代码的返回值,如果不存在返回值,则返回Unit,表示返回值为空的意思。

    if语句

    (1)单行写法,一般用于赋值语句

    在这里插入图片描述

    (2)多行写法
    当使用其他语言风格写时(如Java):

    object helloWorld {
      def main(args: Array[String]): Unit = {
        val inData = 5
        var resultIf:String = "Not assignment"
        if(inData < 5) resultIf = "inData < 5"
        else if(inData < 10) resultIf = "5 =< inData < 10"
        else resultIf = "inData >= 10"
        print(resultIf)
    //    println("Hello World")
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    当使用Scala语言风格写时:

    object helloWorld {
      def main(args: Array[String]): Unit = {
        val inData = 5
        var resultIf:String = {
          if (inData < 5) "inData < 5"
          else if (inData < 10) "5 =< inData < 10"
          else "inData >= 10"
        }
        println(resultIf)
    //    println("Hello World")
      }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    可以看到,因为Scala语言自带语句块返回值,使得代码简洁了不少。

    for循环

    基本形式:
    for(变量<-集合){循环体}
    其中的变量不需要声明

    object helloWorld {
      def main(args: Array[String]): Unit = {
        for(i<-1 to 10){
          println(i)
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    for 可以返回一个集合,使用yield

    object helloWorld {
      def main(args: Array[String]): Unit = {
        var j = for(i<-1 to 10 if i%2==1; if i!= 7) yield i
        println(j)
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这样就j就是输出结果的一个集合。

    for 嵌套
    写法1:

    object helloWorld {
      def main(args: Array[String]): Unit = {
        for(i<-2 to 5){
          for (j<-6 to 8) println(i * j)
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出:
    12
    14
    16
    18
    21
    24
    24
    28
    32
    30
    35
    40

    写法2(scala风格):

    object helloWorld {
      def main(args: Array[String]): Unit = {
        var t = for(i<-2 to 5; j <-6 to 8) yield i*j
        println(t)
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Vector(12, 14, 16, 18, 21, 24, 24, 28, 32, 30, 35, 40)
    for 嵌套中的守卫可以进行可见变量的操作

    while、do while

    与其他语言类似
    注意:scala没有其他语言相同的break、continue,类似功能可以使用守卫实现。

    数组

    与Java类似,分为可变和不可变数组,默认是不可变数组,初始化后长度不可变。

    Map映射

    键值对的集合。
    [name:“张飞”, age:15, Gender:m]
    两个Map相加[age:20]+[age:30] = [age:50]

    就是键相同能够进行值的相加,这点用于词频统计非常方便。

    tuple元组

    圆括号里的数据,可以是不同的数据类型。
    访问元组中的元素
    使用._下标(从1开始) 进行索引
    在这里插入图片描述

  • 相关阅读:
    Vue - 实现锚点跳转定位到指定页面位置功能 / Anchor 页面添加锚点(仅需一个函数代码超级简洁)
    QT 实现简单的天气 哈哈
    6.S081 附加Lab4 从源代码看进程退出——exit,wait,kill
    Cannot read properties of undefined (reading ‘prototype‘)
    十二、stm32-红外遥控(OLED显示)
    Linux权限
    UE4 设计模式:简单工程(Simple Factory Pattern)
    爬虫 day 06 lxml和多线程
    基于React 实现井字棋
    新基建助力智能化道路交通领域的转型发展
  • 原文地址:https://blog.csdn.net/qq_52785473/article/details/128051925