Kotlin学习(2)函数
来源:互联网 发布:如何催乙方进度 知乎 编辑:程序博客网 时间:2024/05/16 04:05
函数的定义和使用
//泛型函数,和默认参数fun <T> joinToString( collection: Collection<T>, separator: String = ", ", prefix: String = "[", postfix: String = "]"): String{ val result = StringBuilder(prefix) for ((index, element) in collection.withIndex()){ if (index > 0) result.append(separator) result.append(element) } result.append(postfix) return result.toString()}fun main(args: Array<String>){ //集合,HashSet val set = setOf(1,2,3,4,4,5) //列表,ArrayList val list = listOf(1,2,3,4,4,5) //Map,HashMap val map = mapOf(1 to "one", 2 to "two", 10 to "ten") //命名参数 val result = joinToString(set, separator = ", ", prefix = "{", postfix = "}")}
const关键字
//Javapublic static final String PI = "3.1415";//Kotlinconst val PI = "3.1415"
扩展类的功能
/* 文件1 *///加一个方法//这里的this指向调用该函数的String对象,可以省略fun String.lastChar(): Char = this.get(this.length - 1)fun String.lastChar2(): Char = get(length - 1)//等价于StringUtil.lastChar("aaaa")//加一个属性var StringBuilder.lastChar: Char get() = get(length - 1) set(value) = setCharAt(length - 1,value)/* 文件2,在同一包下 *///导入到该文件,并重命名import lastChar as lfun main(vararg args: String){ println("lalalalala".l())}
//扩展方法不会被覆盖open class View{ open fun click() = println("View Clicked")}class Button : View(){ override fun click() { println("Button Clicked") }}fun View.showOff() = println("I'm a View")fun Button.showOff() = println("I'm a Button")fun main(vararg args: String){ val view: View = Button() view.click() //Button Clicked view.showOff() //I'm a View(方法不会被覆盖)}
可变参数
fun <T> addEle(vararg eles: T){ //*表示解构 val l = listOf<T>(*eles) println(l)}//等价于fun <T> addEle(eles: Array<T>)fun main(vararg args: String){ addEle(1,2,3,4)}
中缀调用
val map = mapOf(1 to "one", 7 to "seven", 53 to "fifty-three")
这是个语法糖, 对于单参数的函数
1.to("one")1 to "one"
//写个玩玩看class Test{ infix fun printPara(s: String){ println(s) }}fun main(vararg args: String){ val test = Test() test printPara "aaa"}//to这东西的由来infix fun Any.to(other: Any) = Pair(this, other)
Pair解构
fun main(vararg args: String){ //只能在局部作用域中生效 val (key, value) = 1 to "one"}
多行字符串
fun main(vararg args: String){ val str = """| // | \\ ${1} | \\ ${1+1} | \\""" println(str.trimMargin())}/* // \\ 1 \\ 2 \\*/
内部函数
class User(val id: Int, val name: String, val address: String)fun saveUser(user: User) { //内部函数,能够访问外部函数的作用域 fun validate(value: String, fieldName: String) { if (value.isEmpty()) { throw IllegalArgumentException( "Can't save user ${user.id}: " + "$fieldName is empty") } } validate(user.name, "Name") validate(user.address, "Address") // Save user to the database}
阅读全文
0 0
- Kotlin学习(2)函数
- Kotlin学习(2)
- Kotlin学习笔记(三)- 函数
- Kotlin学习笔记(四)-函数补充
- Kotlin学习之函数
- kotlin学习day3:函数
- Kotlin 学习笔记(2)
- Kotlin基础学习(2)
- Kotlin学习(7)高阶函数和函数类型
- Kotlin学习(十二): 函数、高级函数和Lambda表达式
- Kotlin简明学习,infix函数
- # Kotlin学习之-6.1 函数
- kotlin学习day11:扩展函数
- Kotlin学习(学习kotlin的日子)
- Kotlin学习记录(二)—— Kotlin的变量、属性、类、构造函数、继承、方法
- Kotlin开发语言学习(5) 函数与闭包
- Kotlin学习笔记(九)函数,Lambda表达式
- kotlin学习7(基础操作符、控制流、函数)
- dubbo-admin管理平台搭建
- redis缓存技术实现导航栏的维护
- 在vs2015中使用qt5出现中文乱码的问题
- Java删除文件夹和文件
- JavaScript instanceof 运算符深入剖析
- Kotlin学习(2)函数
- android setTextColor setImageResource setBackgroundResource
- css笔记
- jsp界面获取Struts action中的参数值
- 安装redmine部分问题过程详解
- Js-Jquery 网页抢购
- nginx+fastdfs 502异常解决
- 对不起,我的博客
- mysql timeStamp默认值0000-00-00 00:00:00 报错