快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

Kotlin是什么意思

Kotlin是什么意思,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联服务项目包括沙湾网站建设、沙湾网站制作、沙湾网页制作以及沙湾网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,沙湾网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到沙湾省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

一、Kotlin是什么

Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBrains 开发。Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。Kotlin已正式成为Android官方支持开发语言。

二、Kotlin的就应用领域

学完kotlin能成为全栈工程师。

不仅能编写web前端,web后端,Android移动端,还可以编写server脚本,桌面游戏。

三、Kotlin的特点

静态强类型性语言

运行在JVM上

可编译成JavaScript代码

与Java100%兼容

四、Kotlin的发展趋势

2011年进行开源,2017年在github上star数量已经达到17k。目前 花瓣、豆瓣 APP 以及 JetBrains 全线编辑器都在使用 Kotlin,国内很多初创公司也都

在使用 Kotlin(尤其是应用于 Android 开发)

五、Kotlin的优势

全面支持Lambda表达式

数据类(Data classes)

函数字面量和内联函数(Function literals & inline functions)

函数扩展(Extension functions)

空安全(Null safety)

智能转换(Smart casts)

字符串模版(String templates)

主构造函数(Primary constructors)

类委托(Class delegation)

类型推断(Type inference)

单例(Singletons)

声明点变量(Declaration-site variance)

区间表达式(Range expressions)

六、Kotlin中的函数

内联函数

Android开发中,打印信息一般我们会用到Log类,Log中每个方法我们都要传两个参数,第一个tag参数在Kotlin中我们可以像下面封装一下,这样就只需要传一个参数。

inline fun T.debug(log:Any)

{

Log.d(T::class.simpleName, log.toString())

}

它可以通过泛型参数 T 来获取到T的具体类型,并且拿到它的类名——当然,如果你愿意,你甚至可以调用它的构造方法来构造一个对象出来——为什么 Kotlin 可以做到呢?因为这段代码是 inline 的,最终编译时是要编译到调用它的代码块中,这时候T的类型实际上是确定的,因而 Kotlin 通过 reified 这个关键字告诉编译器,T 这个参数可不只是个摆设,我要把它当实际类型来用。

在高阶函数前增加inline注解可以指定函数內联,inline 标记即影响函数本身也影响传递进来的 lambda 函数:所有的这些都将被关联到调用点。内联可能会引起生成代码增长,但我们可以合理的解决它(不要内联太大的函数)。也可以使用noinline来指定某些函数不进行內联。

inline fun foo(inlined: () -> Uint, @noinline notInlined: () -> Unit) {

//...

}

可以内联的 lambda 表达式只能在内联函数内部调用或者作为可内联的参数传递, 但是 noinline 的可以以任何我们喜欢的方式操作:存储在字段中、传送它等等。

单表达式函数

如果一个函数的函数体只有一个表达式,函数体可以直接写在 “=”之后,也就是这样:

fun double(x: Int): Int = x * 2

fun eval(expr: Expr): Double = when(expr) {

is Expr.Const -> expr.number

is Expr.Sum -> eval(expr.e1) + eval(expr.e2)

Expr.NotANumber -> Double.NaN

// the `else` clause is not required because we've covered all the cases

}

这里使用了when关键字,类似于java中的switch,但比之更强大。

匿名函数

/**

* 匿名函数,没有名字,其他语法和常规函数类似

*

* 声明一个匿名函数,这里用表达式来表示函数体,也就是单表达式函数

*/

var test3= fun(x:Int,y:Int):Int=x+y

/**

* 声明一个匿名函数,这里用代码块来表示函数体

*/

var test4= fun(x:Int,y:Int):Int {

return x+y

}

/**

* 声明一个匿名函数,当返回值类型可以推断出,可以省略

*/

var test5= fun(x:Int,y:Int)=x+y

fun main(args: Array) {

println(test3(1,2))

println(test4(1,2))

println(test5(1,2))

}

高阶函数与lambda表达式

高阶函数就是可以接受函数作为参数或返回一个函数的函数。比如 lock() 就是一个很好的例子

fun lock(lock: Lock, body: () -> T ) : T {

lock.lock()

try {

return body()

}

finally {

lock.unlock()

}

}

关于Kotlin是什么意思问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


文章名称:Kotlin是什么意思
分享网址:http://6mz.cn/article/ijgihg.html

其他资讯