scala基础篇·函数定义

scala基础篇·函数定义

object TestFunction {
  def main(args: Array[String]): Unit = {
    println(abs(2))
    println(abs(-2))

    println(recursive(-10))
    println(recursive(4))
    countDownPrint(9)

    println(defaultParams("aaaa"))
    println(defaultParams("bbbb", "|", "|"))
    println(defaultParams(str = "cccc", end = "<<", start = ">>"))

    println(sum(1, 2, 3, 4, 5))
    //不能传序列为参数
    //println(sum(1 to 5))
    //但是可以使用 : _* 将参数当作序列处理
    println(sum(1 to 5: _*))

    println(empty())

    lazyLoad()
  }

  def p(): Unit = {

  }

  /**
    * 绝对值函数
    *
    * @param num
    * @return
    */
  def abs(num: Int): Int = {
    if (num >= 0) num else -num
  }

  /**
    * 递归
    *
    * @param end
    * @return
    */
  def recursive(end: Int): Int = {
    if (end <= 0) 1 else end * recursive(end - 1)
  }

  /**
    * 递归打印
    *
    * @param end
    */
  def countDownPrint(end: Int): Unit = {
    if (end == 0) {
      println(0)
    } else {
      print(end)
      countDownPrint(end - 1)
    }
  }


  /**
    * 默认值函数
    *
    * @param str
    * @param start
    * @param end
    * @return
    */
  def defaultParams(str: String, start: String = "[", end: String = "]"): String = {
    start + str + end
  }


  /**
    * 不定长参数
    *
    * @param numbers
    * @return
    */
  def sum(numbers: Int*): Int = {
    var sum = 0
    for (i <- numbers) sum += i
    sum
  }

  /**
    * 空表达式返回()
    */
  def empty(): Unit = {

  }

  /**
    * 懒加载
    */
  def lazyLoad(): Unit = {
    lazy val str = scala.io.Source.fromFile("").mkString
    println("懒加载,直到被用到时才会被加载,但是每次访问时,都会调用一个方法,以线程安全的形式检查该lazy是否被初始化,有利有弊")
    println(str)
  }
}

运行结果如下:

2
2
1
24
9876543210
[aaaa]
|bbbb|
>>cccc<<
15
15
()
懒加载,直到被用到时才会被加载,但是每次访问时,都会调用一个方法,以线程安全的形式检查该lazy是否被初始化,有利有弊
Exception in thread "main" java.io.FileNotFoundException:  (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at scala.io.Source$.fromFile(Source.scala:91)
    at scala.io.Source$.fromFile(Source.scala:76)
    at scala.io.Source$.fromFile(Source.scala:54)
    at base.TestFunction$.str$lzycompute$1(TestFunction.scala:100)
    at base.TestFunction$.str$1(TestFunction.scala:100)
    at base.TestFunction$.lazyLoad(TestFunction.scala:102)
    at base.TestFunction$.main(TestFunction.scala:29)
    at base.TestFunction.main(TestFunction.scala)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值