zoukankan      html  css  js  c++  java
  • 8-8 特殊的函数调用形式

    1.重复参数

      要表示这样一个重复参数,需要在参数的类型之后加上一个星号(*)。

    def main(args: Array[String]): Unit = {
      echo("hello", "world!")
    }
    
    def echo(args: String*) = {
      for (arg <- args) println(arg)
    }
    

      在函数内部,这个重复参数的类型是一个所声明参数类型的Array。但是不能直接将当做重复参数传入,需要在数组实参后面加上冒号和一个_*符号

    def main(args: Array[String]): Unit = {
      val arr = Array("What's", "up", "doc?")
    
      //echo(arr) 类型不符
    
      echo(arr: _*)
    }
    
    def echo(args: String*) = {
      for (arg <- args) println(arg)
    }
    

    2.带名字的参数

      用带名字的参数发起调用,实参可以在不改变含义的前提下交换位置。

    def main(args: Array[String]): Unit = {
      val sp = speed(time = 10, distance = 100)
      println(sp)
    }
    
    def speed(distance: Float, time: Float) = distance / time
    

    3.缺省参数值

      有缺省值的参数可以不出现在函数调用中。

    def main(args: Array[String]): Unit = {
      printTime()
    }
    
    def printTime(out: java.io.PrintStream = Console.out) = {
      out.println("time = " + System.currentTimeMillis())
    }
    

      缺省参数跟带名字的参数放在一起时尤为有用。

    def main(args: Array[String]): Unit = {
      //显式地给出输出流,时间除数填充为默认值
      printTime2(out = Console.err)
      
      //显式地给出时间除数,输出流填充为默认值
      printTime2(divisor = 1000)
    }
    
    def printTime2(out: java.io.PrintStream = Console.out, divisor: Int = 1) = {
      out.println("time = " + System.currentTimeMillis() / divisor)
    }
    

      

  • 相关阅读:
    笔试小题
    java泛型
    HTML 字符实体 &lt; &gt: &amp;等
    HttpClient Get/Post方式调用Http接口
    Webservice简介
    Mybtis框架总结(一)
    java 获取当月第一天和最后一天 获取前一个月第一天和最后一天
    java程序员需要掌握些什么知识
    Float和double丢失精度问题及解决方案
    ViewController的viewWillLayoutSubviews作用
  • 原文地址:https://www.cnblogs.com/noyouth/p/14056135.html
Copyright © 2011-2022 走看看