kotlin核心编程pdf下载_Kotlin核心编程

打印类型名称

println(string.javaClass.name)

复制代码

如果kotlin没有声明返回值类型,则默认返回值类型为Unit

声明类的属性

inner class Book(var name: String) {

fun printName() {

println(this.name)

}

}

复制代码

优先使用val写出防御性代码

函数类型

(int) -> Unit

() -> Unit

(Int, String) -> Unit

(errorCode: Int, errMsg: String) -> Unit

(errorCode: Int, errMsg: String?) -> Unit

((errorCode: Int, errMsg: String?) -> Unit)?

/**

* 函数类型参数

*/

fun filter(name:String, filter: (country: Country) -> Unit) {

}

复制代码

返回值为一个函数

(Int) -> ((Int) -> Unit)

复制代码

双冒号调用类方法 class::fun

匿名函数

每个Function都有一个Invoke函数,所以想要执行函数体,需要调用函数.invoke()

private fun foo(int: Int) = { _: Int ->

println(int.toString() + "fage")

}

private fun list() {

listOf(1, 2, 3).forEach { foo(it).invoke(it) }

}

复制代码

Lambda

val sum: (Int, Int) -> Int = {x,y -> x+y}

如果Lamba表达式的返回值不是Unit, 那么默认最后一行就是其返回值

扩展函数

package com.example.kotlincore

import android.view.View

fun View.invisiable() {

visibility = View.INVISIBLE

}

fun View.gone() {

visibility = View.GONE

}

复制代码

if else 保证代码安全,消除副作用

fun ifExpression(flag: Boolean) {

val a = if (flag) "fage" else ""

}

复制代码

枚举配合when表达式

package com.example.kotlincore

/**

* 星期几枚举

*/

enum class Day(value: Int) {

MON(1),

TUE(2),

WEN(3),

THU(4),

FRI(5),

SAT(6),

SUN(7)

}

/**

* 日程

*/

fun schedule(sunny: Boolean, day: Day) {

when(day) {

Day.SAT -> basketball()

Day.SUN -> finish()

Day.FRI -> appointment()

else -> when {

sunny -> library()

else -> study()

}

}

}

fun basketball() {}

fun fishing() {}

fun appointment() {}

fun library() {}

fun study() {}

复制代码

泛型

泛型类实现查找一个元素是否在数组中,是则返回本身,反之返回null

package com.example.kotlincore

/**

* 查找数组中是否含有一个对象

*/

class SmartClass : ArrayList() {

fun find(t: T) : T? {

val index = super.indexOf(t)

return if (index >= 0) super.get(index) else null

}

}

复制代码

使用扩展函数实现上面的需求

fun ArrayList.find(t: T): T? {

val index = this.indexOf(t)

return if (index >= 0) this[index] else

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值