Kotlin扩展函数

apply函数
apply函数扩展了所有的泛型对象,在闭包范围内可以任意调用该对象的任意方法,并在最后返回该对象.

主要的作用:是可以用来简化初始化对象的功能

fragment = NewFragment().apply {
    arguments = bundle
    supportFragmentManager.beginTransaction()
            .replace(R.id.fragment, this)
            .commit()
}

let函数

判空

var name:String? = null
var map = HashMap<String>()
// name是可变变量,IF 条件判断不等于空,对于编译器来讲name还是可空变量,所以必须先赋值到val变量
val theName = name
if(theName !=null){
  //此时theName是不可空变量
  map[theName] = "OK"
}
// 使用?.let方法简化上面的代码
name?.let{
   map[it] = "OK"
}

run函数

1.全局函数run替代java代码中的{}代码块

2.函数省略定义返回类型

@Get("/user/list")
fun list(): List<User>{
  return service.findUsers()
}
// 简写成
@Get("/user/list")
fun list() = run {
  service.findUsers()
}

also函数

also 通过it访问当前变量,并且整体返回自己。所以可以模拟赋值语句当做表达式的效果。

 public void test(BufferedReader reader) throws IOException {
        String line;
        while ( (line=reader.readLine())!=null ){
            System.out.println(line);
        }
    }
fun test(reader: BufferedReader) {
        var line: String?
        while (reader.readLine().also { line = it } != null) {
            println(line)
        }
    }

with函数

消除对同一个变量多次引用

val user= User()
user.setName("xxx")
user.doSome()
user.ddd()


// 使用with修改为
with(user){
  this.setName("xxx")
  this.doSome()
  this.ddd()
}

// 进一步省略this

with(user){
  setName("xxx")
  doSome()
  ddd()
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值