发布网友 发布时间:2022-04-23 05:21
共1个回答
热心网友 时间:2023-06-26 21:09
只是发表一下个人经验,不喜勿喷。
null安全,提前声明变量是否为空,与其说是一个语法糖,而不是提前空异常处理安全概念,是为了避免很多不必要的空检查,同时迫使你做必要的null,以避免空异常。不用再担心我在调试时抛出了空的异常。
很容易封装操作,编译器自动帮你转化为单方法的接口对象,很容易就写出自己的dsl,很方便的运用函数式编程.
如我实现的Db.transaction()就可以这么用
Db().transaction(){
execute("insert ...")
execute("update ...")
execute("delete ...")
}
非常简单的声明单例对象,加个ioc容器都多余
如实现单例的路由对象
object Router:IRouter{
}
扩展原有的类是很简单的事情,不用再像java那样罗嗦,要不用代理,要不写个静态方法包含扩展对象作为参数.
如实现扩展String,添加toDate()方法
public fun String.toDate(): Date {
return java.text.SimpleDateFormat("yyyy-MM-dd").parse(this)
}
直接使用 "2017-02-02".toDate() 就直接将String转为Date
一个by关键字就很容易实现类的代理,属性读写的代理
如我实现的mvc框架要扩展HttpServletRequest,直接用by就实现了代理扩展
class Request(protected val req:HttpServletRequest /* 请求对象 */):HttpServletRequest by req{
}
以上。