kotin-<常用的一些函数>

runCatching

runCatching 使用来替换java 的try catch的

  val result =   runCatching<String> {
               "大学"
                throw Exception("dff")
       }.onSuccess {
           println("onSuccess=${it}")
      }.onFailure {
          println("onFailure=${it}")
      }


//里面用的也是try, catch 
public inline fun <R> runCatching(block: () -> R): Result<R> {
    return try {
        Result.success(block())
    } catch (e: Throwable) {
        Result.failure(e)
    }
}

  
 //success方法是将block函数返回的 R值转成Result对象,如果执行有异常则执行catch中的 Result.failure(e)
  public inline fun <T> success(value: T): Result<T> =
            Result(value)


返回result
public value class Result<out T> @PublishedApi internal constructor(
    @PublishedApi
    internal val value: Any?
) 


Result对象中有一些扩展函数可以拿到当前的value
比如:
.getOrNull()



  public inline fun getOrNull(): T? =
        when {
            isFailure -> null
            else -> value as T
        }

如果是失败返回null,成功就将value 强转成自己传入的类型

also {}

运算block函数,返回当前的对象,适用于日志记录或调试

public inline fun <T> T.also(block: (T) -> Unit): T {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    block(this)
    return this
}

和apply特别像 ,
@kotlin.internal.InlineOnly
public inline fun <T> T.apply(block: T.() -> Unit): T {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    block()
    return this
}



1. also
适用场景:

用于副作用(比如日志、调试、检查等),但不改变原对象。

返回原对象,因此适用于链式调用

2. apply

适用场景:

主要用于配置对象,通常用于初始化对象的属性。

返回调用者自身,因此适用于初始化模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值