请选择 进入手机版 | 继续访问电脑版
本站特色:极好的技术研究氛围!所有技术交流,必有回复!

疯狂Java联盟

 找回密码
 加入联盟
查看: 496|回复: 0

[Android] 个数可变的形参——Kotlin函数之四

[复制链接]
发表于 2017-11-20 12:16:02 | 显示全部楼层 |阅读模式
本帖最后由 kongyeeku 于 2018-2-1 23:21 编辑

本文节选自《疯狂Kotlin讲义》
Kotlin允许定义个数可变的参数,从而允许为函数指定数量不确定的形参。如果在定义函数时,只要为在形参的类型前增加vararg修饰,则表明该形参可以接受多个参数值,多个参数值被当成数组传入。下面程序定义了一个形参个数可变的函数。
程序清单:codes\06\6.2\Varargs.kt
// 定义了形参个数可变的函数
fun test(a :Int , vararg books : String) {
         //books被当成数组处理
         for(b in books) {
                   println(b)
         }
         // 输出整数变量a的值
         println(a)
}
fun main(args: Array<String>) {
         // 调用test()函数
         test(5, "疯狂iOS讲义" , "疯狂Android讲义")
}
运行上面程序,将看到如下运行结果:
疯狂iOS讲义
疯狂Android讲义
5
从上面运行结果可以看出,当调用test()函数时,books参数可以传入多个字符串作为参数值。从test()的函数体代码来看,形参个数可变的参数本质就是一个数组参数。
Kotlin允许个数可变的形参可以处于形参列表的任意位置(不要求是形参列表的最后一个参数),但Kotlin要求一个函数最多只能带一个个数可变的形参。例如如下程序。
程序清单:codes/06/6.2/Varargs2.swift
  1. // 定义了形参个数可变的函数
  2. fun test(vararg books : String , num: Int) {
  3.          // books被当成数组处理
  4.          for (i in books.indices) {
  5.                    println(books[i])
  6.          }
  7.          println(num)
  8. }
  9. fun main(args: Array<String>) {
  10.          // 调用test()函数
  11.          test("疯狂iOS讲义", "疯狂Android讲义", num = 20)
  12. }
复制代码

正如上面程序中所看到的,test()函数的第一个参数就是个数可变的形参,由于该参数可接受个数不等的参数值,因此如果需要给后面的参数传入参数值,则必须使用命名参数。
如果我们已有一个数组,程序希望将数组的多个元素传给个数可变的参数,可以在传入的数组参数前增加*运算符。例如如下代码。
var arr = arrayOf("疯狂Kotlin讲义", "疯狂Java讲义")
// 将数组的多个元素传给个数可变的参数
test(*arr, num = 20)
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

视频、代码、电子书下载
请关注"疯狂图书"公众号
QQ交流1群: 545923995  未满
微信群请扫二维码
QQ交流1群:
545923995
(未满)

小黑屋|手机版|Archiver|疯狂Java联盟 ( 粤ICP备11094030号 )

GMT+8, 2019-5-22 19:35 , Processed in 0.264985 second(s), 6 queries , File On.

快速回复 返回顶部 返回列表