• 快学Scala(2)--控制结构和函数


    块表达式: val distance = { val dx = x - x0; val dy = y - y0; sqrt(dx * dx + dy * dy) } 取最后一个表达式

    循环:

    1.

    while(n > 0) {

      r = r * n

      n -= 1

    }

    2.

    for(i <- 1 to n)

      r = r * i

    3.

    val s = "Hello"

    var sum = 0

    for(i <- 0 until s.length)

      sum += s(i)

    注:to包含上限,until不包含上限

    函数

    def fac(n: Int) = {

      var r = 1

      for (i <- 1 to n) r = r * i

      r

    }

    除了递归之外,其他不用指定返回类型。但是对于递归函数,如果没有返回类型,Scala编译器会报错

    def fac(n: Int): Int = if(n <= 0) 1 else n * fac(n-1)

    _*序列化:(1 to 5: _*) = (1, 2, 3, 4, 5)

    若函数不返回值,则称作一个过程,调用该函数仅仅为了副作用。

    def box(s: String) { ... }

    然而最好写作 def box(s: String): Unit = { ... }

    val, lazy, def区别:val 在被定义时即被取值;lazy在首次被调用时被取值,def在每次被调用时都会被取值

       

  • 相关阅读:
    http缓存机制与原理
    BFC与浮动
    05ICMP协议与ARP协议(IP协议中重要协议)
    04IP编址(网络层)
    03以太网帧结构(链路层 IEEE802.3)
    02传输介质简介
    shell 脚本 2
    shell 脚本 1
    shell 中时间 表达
    sed 行编辑器
  • 原文地址:https://www.cnblogs.com/PaulingZhou/p/6615973.html
Copyright © 2020-2023  润新知