Kotlin 具名参数&可变参数

code in kotlin.jpg
具名参数
  • 给函数的实参附上形参

  • 举例:

      fun sum(arg1: Int, arg2: Int) = arg1 + arg2
      
      sum(arg1 = 1, arg2 = 2)
    

变长参数

vararg 关键字,参数长度可变化

  • 某个参数可以接受多个值

      fun hello(vararg ints: Int) {
          ints.forEach(::println)
      }
      
       hello(1,2,3,4,5)
    
  • 因为在kotlin里有具名参数,所以可以不为最后一个参数,可以在参数列表里的任意位置(Java里只能是最后一个参数)

  • 如果传参数时有歧义,则需要使用具名参数 (当变长参数前面有参数时,如果编译器能识别出来可以不用具名参数传入了,如果在其后面有参数时,则要使用具名参数指定类型传入了)

     fun hello(double: Double, vararg ints: Int, string: String) {
         println(double)
         ints.forEach(::println)
         println(string)
     }
     
     hello(1.0, 1, 2, 3, 4, 5, string = "hello")
     
     double 编译器可以识别出来类型
     string 编译器提示使用具名参数传入
    

Spread Operator

  • 只支持展开Array

  • 只用于变长参数列表的实参

  • 不能重载

      fun hello(double: Double, vararg ints: Int, string: String) {
          println(double)
          ints.forEach(::println)
          println(string)
      }
      
      val array = intArrayOf(1, 2, 3, 4, 5)
      hello(3.0, *array, string = "hello")
      
      array 前面加 *
    
默认参数
  • 为函数参数指定默认值

  • 可以为任意位置的参数指定默认值

  • 传参时,如果有歧义,需要使用具名参数

      fun world(double: Double = 3.0, vararg ints: Int, string: String) {
          println(double)
          ints.forEach(::println)
          println(string)
      }
      
      world(ints = *intArrayOf(1, 2, 3, 4, 5), string = "world")
      第一个参数指定的默认参数,调用时可以省略不传 
      
      fun world(double: Double, vararg ints: Int, string: String = "world")
      world(3.0, *array)
      如果默认参数在最后一个,不会产生歧义
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《Kotin 编程思想·实战》 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 >...
    光剑书架上的书阅读 6,745评论 1 4
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 9,397评论 0 6
  • (一) 米米第一次和男朋友单独旅行是在高三结束后的暑假。厦门。 第一次出远门米米显然有些兴奋,充满了新鲜感,相应的...
    Shadowarea阅读 1,814评论 0 1
  • 2016年12月15日,精进1000天沉淀行动营 一堂课的差距有多大,这里告诉你! 一日之计在于晨,早晨时宝贵的时...
    1路向前阅读 1,616评论 0 0
  • 前言:有软文之嫌哟! 这几天我的朋友圈被阿超和他兄弟们做的一个视频刷频了。 我的朋友圈人不多,有同学、朋友、同事以...
    四条眉毛陆小凤阅读 3,671评论 0 0

友情链接更多精彩内容