Scala学习笔记07【For、Scala函数进阶】

本文深入讲解Scala中的for循环实例、函数定义进阶技巧,包括递归、参数默认值设定及变长参数应用,并探讨lazy val的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scala中for常用实例

for(i <- 1 to 3; j <- 1 to 3) 
  print((1000*i + j) + "\t")                    
//结果为:1001    1002    1003    2001    2002    2003    3001    3002    3003


for(i <- 1 to 3; j <- 1 to 3 if i!= j)  //"if i!= j"条件表达式可在此使用
  print((1000*i + j) + "\t")                    
//结果为:1002    1003    2001    2003    3001    3002

Scala函数定义进阶

object For_Function_Advanced{

    def main(args: Array[String]): Unit = {

        def addA(x : Int) = x + 100 //自动推断函数返回值为Int
        val add = (x : Int) => x + 200  //"(x : Int) => x + 200"匿名函数 直接作为值进行传递
        println("addA()___result:" + addA(99))  //addA()___result:199
        println("add___result:" + add(98))      //add___result:298



        //递归实例
        def fac(n: Int): Int = if(n <= 0) 1 else n * fac(n - 1)
            println("fac(8): " + fac(8))    //fac(8): 40320


        //函数参数设置默认值
        def combine(mid : String, left : String = "[", right : String = "]") = left + mid + right
            println("Result:" + combine("I am hungry")) //Result:[I am hungry]
            println("Result:" + combine("I am hungry", "<<", ">>"))    //Result:<<I am hungry>>  覆盖了默认参数值



        //参数个数不固定的函数
        def connected(args: Int*) = {
            var result = 0
            for(arg <- args)
                result += arg
                result
        }
        println("Result: " + connected(1, 2, 3, 4, 5))  //Result: 15
        println("Result: " + connected(1, 2, 3, 4, 5, 6))   //Result: 21
    }
}

Scala中的lazy val

Scala中通过lazy关键字来定义惰性变量,惰性变量只能是不可变变量。
只有在调用惰性变量方法的时候,才会去实例化这个变量。
lazy实例:

object LazyTest{

    def main(args: Array[String]):Unit = {
        lazy val file = Source.fromFile("C:\\xxx.txt")  // lazy val 惰性变量

        for(line <- file.getLines)                  //当要调用file->getLines时才真正定义file
            println(line)
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值