前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scala 入门1(变量、分支循环、函数)

Scala 入门1(变量、分支循环、函数)

作者头像
Michael阿明
发布2021-09-06 10:46:53
4890
发布2021-09-06 10:46:53
举报
文章被收录于专栏:Michael阿明学习之路

文章目录

学自 https://www.runoob.com/scala/scala-tutorial.html

1. var 变量,val常量

scala 语句 用 ; 或者 \n 分句

代码语言:javascript
复制
object HelloWorld { // 类名跟文件名一致
    def main(args: Array[String]):Unit = { // Unit 相当于 void
        println("Hello World!")
        var myVar : String = "Foo"
        val myVal : String = "Too"
        myVar = "hello"
        // myVal = "world" // val 相当于常量,不能再次赋值
        val a, b, c = 100 // 不能分别赋值
        println(a,b,c) //(100,100,100)
        var pa = (40, "foo")
        println(pa) // (40,foo)

2. 分支、循环

  • 跟 java、 c++ 很像
代码语言:javascript
复制
        if(a < 200)
            println("a < 200")
        else if(a == 200)
            println("a == 200")
        else
            println("a > 200")

        var n = 10
        while(n > 0){
            println(n)
            n -= 1
        }
        
        n = -1
        do{
            println(n)
            n -= 1
        }while(n > 0)

        for(x <- 1 to 10){
            println(x) // 包含结束的数
        }
        for(x <- 1 to 3; y <- 1 to 3){
            println(x, y) // 双重循环
        }
        var numList = List(100,2,3,4,5)
        for(a <- numList){
            println(a)
        }
        // 过滤元素
        for(a <- numList if a < 5; if a != 3){
            println(a)
        }
        // for yield : for 的返回值作为变量存储
        var returnVal = for{a <- numList if a < 5; if a != 3} yield a
        for(a <- returnVal)
            println(a)
  • 特有的 break 方式 Breaks.breakable{}
代码语言:javascript
复制
        import scala.util.control._
        val loop = new Breaks
        loop.breakable{
            for(a <- numList){
                println(a)
                if(a == 3)
                    loop.break
            }
        }
        println("after break")

3. 函数、方法

代码语言:javascript
复制
        // val 定义函数, def 定义方法
        class Test{
            def method(x:Int) = x + 3 // 多行语句,可用 = {。。。}

            val func = (x:Int) => x + 3
        }
        var obj = new Test()
        println(obj.method(2)) // 5
        println(obj.func(2)) // 5

        // 可变参数
        def printString(s : String*) = {
            for(si <- s)
                println(si)
        }
        printString("hello","michael","scala");

        //指定参数,默认参数
        def addInt(a:Int, b:Int=2, c:Int=3) : Int = {
            var sum = 0
            sum = a+b+c
            println(a,b,c)
            return sum
        }
        println(addInt(1)) // 6

        // 匿名函数
        var mul = (x:Int, y:Int) => x*y
        println(mul(3,4))
        var userDir = () => {System.getProperty("user.dir")}
        println(userDir())

        // 偏应用函数是一种表达式,你不需要提供函数需要的所有参数
        // 只需要提供部分,或不提供所需参数
        import java.util.Date
        def log(date : Date, message : String) = {
            println(date + "-----" + message)
        }
        val date = new Date
        val logWithDateBound = log(date, _ : String)
        logWithDateBound("message1")
        Thread.sleep(1000)
        logWithDateBound("message2")
        Thread.sleep(1000)
        logWithDateBound("message3")

4. 闭包

代码语言:javascript
复制
        // 闭包
        var factor = 3
        val multi = (i : Int) => i*factor
        println(multi(5)) // 15
        factor = 2
        println(multi(5)) // 10
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. var 变量,val常量
  • 2. 分支、循环
  • 3. 函数、方法
  • 4. 闭包
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档