Kotlin 会自动推导函数返回值,上面的代码定义了一个返回值是 String 的函数。
在Kotlin中,高阶函数是指将一个函数作为另一个函数的参数或者返回值。如果用f(x)、g(x)用来表示两个函数,那么高阶函数可以表示为f(g(x))。Kotlin为开发者提供了丰富的高阶函数,比如Standard.kt中的let、with、apply等,_Collectioins.kt中的forEach等。为了能够自如的使用这些高阶函数,我们有必要去了解这些高阶函数的使用方法。
在Kotlin中,有一些用于扩展 & 方便开发者编码的内置函数,能大大提高开发者的开发效率。今天,我将主要讲解的是:
在Kotlin中的源码标准库(Standard.kt)中提供了一些Kotlin扩展的内置函数可以优化kotlin的编码。Standard.kt是Kotlin库的一部分,它定义了一些基本函数。 这个源代码文件虽然一共不到50行代码,但是这些函数功能都非常强大。
在 Java 语言 中 , 任何 引用类型变量 都可以为 空 null ; Java 中 八种 基本数据类型 变量 的 默认值 为 0 或 false ;
Kotlin一个强大之处就在于它的扩展函数,巧妙的运用这些扩展函数可以让你写出的代码更加优雅,阅读起来更加流畅,下面总结了在开发中经常用到的一些内联扩展函数。经常有小伙伴搞不懂with,run,apply等等这些函数该怎么用,在哪里用,我的建议是先记住每个函数的功能(无非就是它需要什么参数?返回值是什么?)记住这两点再根据实际开发中的场景慢慢的就能熟练运用了。其实这些函数极其类似,不同的函数可以完成同样的功能,通过下面的实例也能看出。而在我以往的开发经验中这些函数主要的使用场景有两个,一是非空判断,二是对象的初始化或者本身及方法的频繁调用。
1 . 高阶函数 : 函数的 参数 或 返回值类型 是 函数类型 的 函数 , 是高阶函数 ;
substring函数支持IntRange类型参数,使用until创建的范围遵循左闭右开
Kotlin 语言中 , 在 Standard.kt 源码中 , 为所有类型定义了一批标准库函数 , 所有的 Kotlin 类型都可以调用这些函数 ;
上期主要分享了 From Java To Kotlin 1 :空安全、扩展、函数、Lambda。
好了亲,前文中我们在函数式编程的世界里遨游了一番,现在我们把思绪收回来,放到在Kotlin中的函数式编程中来。
所谓的解构声明就是将一个对象解构(destructure)为多个变量,也就是意味着一个解构声明会一次性创建多个变量.简单的来说,一个解构声明有两个动作: 声明了多个变量 将对象的属性值赋值给相应的变量 例如: val (name, age) = person 这种语法被称为解构声明。解构声明一次创建多个变量。比如声明name和age两个新的变量,可以单独使用。 println(name) println(age) 解构声明最终编译为下面的代码: val name = person.component1()
📷 Kotlin学习之常用高阶函数:filter Kotlin高阶函数一般是数组、集合、序列等数据结构的扩展函数,接收一个操作函数对数据进行操作,在Kotlin函数式编程中占有重要的地位。 一、fil
除了自定义扩展之外,Kotlin中也定义了很多的扩展函数,而这些扩展函数的接收类型是范型,也就是所有对象都可以使用。这些标准的扩展函数都放在了Standard.kt中。
在 Kotlin 协程 Coroutine 中 , 使用 suspend 挂起函数 以异步的方式 返回单个返回值肯定可以实现 , 参考 【Kotlin 协程】协程的挂起和恢复 ① ( 协程的挂起和恢复概念 | 协程的 suspend 挂起函数 ) 博客 ;
let、with、run、apply、also、takeIf、takeUnless、repeat函数的使用
Android 1.5系统中Google 引入了NDK功能,支持使用C和C++语言来进行一些本地化开发。
很多从 Java 转到 Kotlin 的人都会有一个疑惑:为什么 Kotlin 没有沿用 Java 的 void 关键字,而要引入这个叫 Unit 的新东西?
Kotlin是一种在Java虚拟机上执行的静态型别编程语言,它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的编程语言。
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型、基本语法、代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 通过上面的文章,在
前几年的Google I/O大会上,Google正式宣布,Kotlin将会成为Android开发的官方支持语言。除了Android外,Kotlin还可以完全作为服务端开发的语言,比如在未来的Spring 5就将对Kotlin提供强大的支持。以及浏览器编程语言,与JS进行交互。
协程是一种并发设计模式,您可以在Android上使用它来简化异步执行的代码。Kotlin1.3版本添加了 Coroutines,并基于其他语言的既定概念。
作者简介 何伦,携程度假BU移动端资深研发经理,负责iOS、Android平台上跟团游产品预订流程的前端页面的研发工作。对新技术有着浓厚的兴趣。 自从2017年Google宣布Kotlin成为Android官方开发语言之后,Kotlin受到广大Android开发者的追捧。其强大的安全性,简洁性和与Java的互操作性,为开发者带来了耳目一新的开发体验,也极大提升了Android原生代码的开发效率。 不过大部分开发者对Kotlin的使用,仍然局限于把Java代码逻辑按照Kotlin语法进行转换的层面,其实Ko
通过data关键字来定义数据类。通常用来定义纯数据类型的结构体。定义的数据类只能有一个主构造函数定义该数据类中的变量。而在该类中,可以定义函数
函数还可以用中缀表示法调用,当他们是成员函数或扩展函数,只有一个参数,用 infix关键字标注
程序员最头痛的事莫过于看不懂别人的代码。缘由是各式各样的,但归结于一点就是复杂度太高。Kotlin 在降低代码复杂度上下了大功夫,运用一系列新的语法特性降低语法噪音,以求更简单直白地表达语义。
相比Java, Kotlin提供了不少高级语法特性。对于一个Kotlin的初学者来说经常会写出一些不够优雅的代码。在Kotlin中的源码标准库(Standard.kt)中提供了一些Kotlin扩展的内置函数可以优化kotlin的编码。Standard.kt是Kotlin库的一部分,它定义了一些基本函数。 这个源代码文件虽然一共不到50行代码,但是这些函数功能都非常强大。
Kotlin 高阶函数 : Kotlin 的高阶函数 , 就是方法的参数 或 返回值 是函数类型的 函数 ;
ambda即lambda表达式,简称lambda。本质上是可以传递给其它函数的一小段代码。有了lambda,可以轻松地把通用代码结构抽取成库函数。lambda最常见的用途是和集合一起配合。kotlin甚至还拥有带接收者的lambda,这是一种特殊的lambda。
Map是一种把键对象Key和值对象Value映射的集合,它的每一个元素都包含一对键对象和值对象(K-V Pair)。 Key可以看成是Value 的索引,作为key的对象在集合中不可重复(uniq)。
data class就是一个类中只包含一些数据字段,类似于vo,pojo,java bean。一般而言,我们在Java中定义了这个数据类之后要重写一下toString,equals等方法。要生成get,set方法。
前言 在Kotlin介绍:第一部分,我们介绍了基本语法,现在我们可以去看看实际上如何使用Kotlin。在这篇文章中,我们将介绍collections和lambdas表达式,一些方便的扩展函数(apply,let,run和with),null safety(空安全),那下面咱就开始吧。 1、Collections and Lambdas 那么Kotlin collections是什么呢?如果您熟悉Java8,您将会对这些collection方法(java流)和语法十分了解。然而,Kotlin提供了大部分你可能
数组用Array类实现,和Java不同的地方在于,Array类有一个size属性表示数组长度,还有get和set方法,但是也可以使用array[position]的方式获取
Kotlin中的变量定义和Java中差别很大,与Java中需要给变量明确定义变量类型不同,Kotlin只允许变量前声明两种关键字:val和var
在Kotlin中对Java中的一些的接口的回调做了一些优化,可以使用一个lambda函数来代替。可以简化写一些不必要的嵌套回调方法。但是需要注意:在lambda表达式,只支持单抽象方法模型,也就是说设计的接口里面只有一个抽象的方法,才符合lambda表达式的规则,多个回调方法不支持。
默认参数值 : Kotlin 语言 中的 函数参数 , 可以 在定义时 指定参数默认值 ;
作用域函数:它是 Kotlin 标准库的函数,其唯一目的是在对象的上下文中执行代码块。 当您在提供了 lambda 表达式的对象上调用此类函数时,它会形成一个临时范围。 在此范围内,您可以在不使用其名称的情况下访问该对象。
在 Kotlin 中,if 既可以作为普通的判断语句使用,也可以作为表达式使用。 当 if 作为表达式使用时,本身就会有返回值,其效果等同于 java 中的三元运算。
作用域函数是Kotlin比较重要的一个特性,共分为以下5种:let、run、with、apply 以及 also,这五个函数的工作方式可以说非常相似,但是我们需要了解的是这5种函数的差异,以便在不同的场景更好的利用它。读完这篇文章您将了解到:
简单来讲,Lambda是一种函数的表示方式(言外之意也就是说一个Lambda表达式等于一个函数)。更确切的说:Lambda是一个未声明的函数,会以表达式的形式传递
线程是操作系统的内核资源,是 CPU 调度的最小单位,所有应用程序的代码都运行于线程之上。
本章内容包括: 运算符重载 约定:支持各种运算的特殊命名函数 委托属性 7.1 运算符 /**-------------------- 7.1.1 重载二元算术运算 ----------------------*/ // 代码清单7.1 定义一个plus运算符 data class Point(val x: Int, val y: Int) { // 定义一个名为 plus 的方法 operator fu
正式上架:《Kotlin极简教程》Official on shelves: Kotlin Programming minimalist tutorial 此开篇第二回。 直接来说: Hello,World! HelloWorld.kt /** * We declare a package-level function main which returns Unit and takes * an Array of strings as a parameter. Note that semic
继上一篇文章介绍了项目中所使用的Kotlin特性,本文继续整理当前项目所用到的特性。
众所周知在android中当执行程序的耗时超过5秒时就会引发ANR而导致程序崩溃。由于UI的更新操作是在UI主线程进行的,理想状态下每秒展示60帧时人眼感受不到卡顿,1000ms/60帧,即每帧绘制时间不应超过16.67ms。如果某项操作的耗时超过这一数值就会导致UI卡顿。因此在实际的开发中我通常把耗时操作放在一个新的线程中(比如从网络获取数据,从SD卡读取图片等操作),但是呢在android中UI的更新只能在UI主线程中进行更新,因此当我们在非UI线程中执行某些操作的时候想要更新UI就需要与UI主线程进行通信。在android中google为我们提供了AsyncTask和Handler等工具来便捷的实现线程间的通信。有许多的第三方库也为我们实现了这一功能,比如现在非常流行的RxJava库。在本篇文章中呢我想给大家分享的是使用Kotlin的Coroutine(协程)来实现耗时操作的异步加载,现在有RxJava这么屌的库我们为什么还要了解这个呢?Kotlin如今已是android的官方开发语言了解他里边的异步相关的操作是很有必要的。本文只讲解Coroutine的基本使用方法,并不作深入底层的研究,我将以一个加载图片的例子来向您展示Coroutine的基本使用方法。
Kotlin学习之高阶函数和Lambda表达式:闭包 一、闭包 闭包指Lambda表达式和匿名函数外部定义的局部变量,Kotlin支持Lambda表达式和匿名函数访问和修改闭包。 如果一个函数对外部数据没有任何影响,这样的函数是“纯函数”。很多数学函数都是纯函数,比如常见的加减乘除,都只与传入的参数有关,不影响任何外部数据;有些函数则会影响外部数据,比如集合的add()方法,会改变函数外部的集合数据,所以add()不是一个“纯函数”。 Kotlin支持Lambda表达式和匿名函数访问和修改闭包,意味着K
在定义了val变量的代码块执行期间,val变量只能进行唯一一次初始化。但是,如果编译器能确保只有唯一一条初始化语句被执行,可以根据条件使用不同的值来初始化它:
1 . DSL ( Domain Specific Language ) 领域特定语言 : 针对某一个特定的领域的语言 , 如 SQL 语言 ;
闭包 Closures,最初接触大概是在看 Swift 文档的时候,但是似是而非,好像明白了,好像就没彻底明白,记得当时也查了一些资料,终究是没彻底弄清楚。
领取专属 10元无门槛券
手把手带您无忧上云