
kotlin
文章平均质量分 84
spy_develop
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Kotlin声明高阶函数
Kotlin声明高阶函数1.函数类型 把lambda表达式保存在局部变量中: val sum={x:Int,y:Int->x+y} val action={ println(42)} 在这个例子中,编译器推导出sum和action两个变量具有函数类型。我们再看看这些变量的显示类型声明是什么样的: val sum:(Int,Int)->Int={x,y->...原创 2018-03-08 11:16:33 · 2897 阅读 · 1 评论 -
Kotlin内联函数:消除lambda带来的运行时开销
Kotlin内联函数:消除lambda带来的运行时开销1.内联函数如何运作 当一个函数被声明为inline时,它的函数体是内联的——换句话说,函数体会被直接替换到函数调用的地方,而不是被正常调用。来看一个例子以便理解生成的最终代码。 定义一个内联函数 inline fun <T> synchronized(lock:Lock,action:()->T):T{ ...原创 2018-03-09 14:32:22 · 2880 阅读 · 0 评论 -
Kotlin重载比较运算符
Kotlin重载比较运算符1.等号运算符:equals 在Kotlin中使用==运算符,它将被转换成equals方法调用。区别在于==和!=可用于可空运算数,这些运算符会先检查运算数是否为null,如果为null只有两个运算数都为null才会返回true,不为null则调用equals方法。1.1实现equals函数 class Point(val x: Int, val y: Int...原创 2018-02-23 11:30:13 · 3338 阅读 · 0 评论 -
Kotlin重载算数运算符
Kotlin重载算数运算符1.重载二元运算符我们先尝试将两个坐标相加和相减 1.1定义plus运算符 data class Point(val x:Int,val y:Int){ operator fun plus(other:Point):Point{ return Point(x+other.x,y+other.y) ...原创 2018-02-22 16:03:26 · 1946 阅读 · 0 评论 -
Kotlin集合与区间的约定
Kotlin集合与区间的约定 1.通过下标来访问元素:get和set 在kotlin中我们可以用类似java中数组的方式来访问map中的元素,如:val value=map[key] 也可以用同样的运算符来改变一个可变的元素,如:mutableMap[key]=newValue 在kotlin中读取元素默认转换为get运算符方法调用,设置元素默认转换为set运算符方法调用。 ...原创 2018-02-23 16:00:46 · 2211 阅读 · 0 评论 -
Kotlin高阶函数中的控制流
Kotlin高阶函数中的控制流 当你开始使用lambda去替换像循环这样的命令式代码结构时,很快便会遇到return表达式的问题。把一个return语句放在循环的中间是很简单的事情。1.lambda中的返回语句:从一个封闭的函数返回 来比较两种不同的遍历集合的方法,在下面代码清单中,很明显如果一个人的名字是Alice,就该从函数lookForAlice返回。 data class...原创 2018-03-12 11:31:20 · 1970 阅读 · 0 评论 -
Kotlin解构声明和组件函数
Kotlin解构声明和组件函数 结构声明,这个功能允许你展开单个复合值,并使用它来初始化多个单独的变量。 val p=Point(10,20) val (x,y)=p println(x)//10 println(y)//20 一个结构声明看起来像一个普通的变量声明,但它在括号中有多个变量。使用解构声明来返回多个值 data class NameComponents(va...原创 2018-03-05 15:09:31 · 2321 阅读 · 0 评论 -
Kotlin泛型类型参数
Kotlin泛型类型参数 泛型允许你定义带类型参数的类型。当这种类型的实例被创建出来的时候,类型参数被替换成称为类型实参的具体类型。例如,如果有一个List类型的变量,弄清楚这个列表中可以存储哪种事物是有意义的。类型参数可以准确清晰地进行描述,就像这样“这个变量保存了字符串列表”,而不是“这个变量保存了一个列表”。Kotlin说明“字符串列表”的语法和Java看起来一样:List<St...原创 2018-03-13 13:57:21 · 7761 阅读 · 0 评论 -
Kotlin运行时的泛型:擦除和实化类型参数
Kotlin运行时的泛型:擦除和实化类型参数 JVM上的泛型一般是通过类型擦除实现的,就是说泛型类实例的类型实参在运行时是不保留的。在这里我们将讨论类型擦除对Kotlin的实际影响,以及如何通过将函数声明为inline来解决局限性。可以声明一个inline函数,使其类型实参不被擦除。我们将详细讨论实化类型参数,并查看一些有用的例子。1.运行时的泛型:类型检查和转换 和Java一样,Ko...原创 2018-03-14 14:09:48 · 3340 阅读 · 1 评论