• For与Function进阶实战、Lazy的使用笔记总结


    本期内容:
    1:For循环的进阶实战,(更多的实战代码)
    2:Function进阶实战,(Function更多的定义和实现方式)
    3:Lazy的使用,(延迟加载)


    For循环常用:
    for(i <- 1 to 2; j <- 1 to 2 if i!=j){
    println((100*i+j)+" ")
    }


    Function函数:
    注意:(特别重要)
    1:scala中的函数是一定有值返回的,但可以在声明时不明确指定函数的返回值,代码块中的最后一个参数作为scala函数的返回值。
    2:scala因为函数是有返值,所以,函数可以作为函数的参数去传递。

    函数定义方式0:没有返回值的函数
    def sum(x:Int){
    val s=x+100
    println(s) //println方法它的返回值Unit作为sum函数的返回值
    }

    函数定义方式1:声明没有明确指定返回类型的函数
    def sum(x:Int)={
    val s=x+100
    }
    //解析以上代码:用def关键字定义了一个名为sum的函数,这个函数有一个入参x,它的类型是Int,由与scala可以自动进行类型推到,这个函数没有明确指定它的返回值类型,={}这个代码块会进行自动的类型推到。


    函数定义方式2:声明指定返回类型的函数
    def sumAll(x:Int,y:Int):Int={
    val s=x+y
    s
    }
    //解析以上代码:这个函数指定了返回的类型,:Int={},指定了返回的类型为Int


    函数定义方式3:匿名函数,没有名字的函数(特别重要)
    val add = (x:Int) => x+100
    //解析以上代码:左侧 val add 它是一个不可变变量,右侧(x:Int) => x+100它是一个匿名函数,右侧函数计算的结果赋值给左侧add这个变量。
    println("结果是:"+add(50)) //调用打印结果为150


    函数定义之递归方式:函数必须要有返回值
    def fac(n: Int): Int = if (n <= 0) 1 else n * fac(n - 1)
    //解析以上代码:fac这个函数必须要有返回值:Int,如果没有返回值,编译会失败并报错


    函数的参数是可变的:也就是说函数的参数有很多个,如下代码(args: Int*和args: String*)表示可以传递多个参数
    Demo1:
    def content(args: Int*) = {
    var result = 0;
    for (sum <- args) {
    result += sum
    }
    result
    }
    val sum = content(1, 2, 3, 4, 5, 6)
    println("结果是:" + sum)

    Demo2:
    def lianjie(args: String*) = {
    var result = "Hello:"
    for (i <- args) {
    result += i + ","
    }
    result
    }
    val str = lianjie("Spark", "Hadoop");
    println("结果是:" + str)
    结果是:Hello:Spark,Hadoop,

    Lazy的使用:当一个变量或常量加了lazy关键字修饰时,表示只有在第一次被使用时,才会被实例化
    lazy val file = Source.fromFile("D:\hadssss.text") //此文件其实不存在,如果加了lazy关键字,不会出错。
    println("scala")
    //for (line <- file.getLines()) {
    //println(line)
    //}

  • 相关阅读:
    使用ServiceStackRedis链接Redis简介
    浅谈SQL SERVER中事务的ACID
    Sql Server查询性能优化之走出索引的误区
    Redis命令总结
    TSQL查询进阶—理解SQL Server中的锁
    SQL Server 2005 分区表实践——分区切换
    SQL Server Profiler 模板
    深入浅出SQL Server中的死锁
    不同的单元中的类可以共用同一个命名空间
    从硬盘上装xp手记(2005.8.14 )
  • 原文地址:https://www.cnblogs.com/supersom/p/5103695.html
Copyright © 2020-2023  润新知