首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin语言基础入门到熟悉:Lambda 表达式

Kotlin 当中,函数也是作为类型的一种出现的,尽管在当前的版本中,函数类型的灵活性还不如 Python 这样的语言,不过它也是可以被赋值和传递的,这主要就体现在 Lambda 表达式上。...接着,Kotlin 允许我们把函数的最后一个Lambda表达式参数移除括号外,也就是说,我们可以改下上面的 forEach 的写法: args.forEach(){ element ->...我们再来看几个例子: () -> Int //无参,返回 Int (Int, Int) -> String //两个整型参数,返回字符串类型 (()->Unit, Int) -> Unit...表达式被映射成 kotlin/Function23 这个类,不过,这个类却不存在,也就是说,对于超过 22 个参数的 Lambda 表达式,Kotlin 代码可以编译通过,但会抛运行时异常。...第二句,拿到这个类的实例以后做强——还啥,直接拿来用呗,肯定没问题呀。 那你说 SAM 转换有什么条件呢? 首先,调用者在 Kotlin 当中,被调用者是 Java 代码。

41420
您找到你想要的搜索结果了吗?
是的
没有找到

kotlin基础--字符串操作、数字类型、标准库函数

上次我们学习了kotlin的null安全、异常、先决条件,接下来来看看kotlin字符串操作、数字类型、标准库函数 一、字符串操作 1.字符串截取 substring函数支持IntRange类型参数,...在编译时会自动把一样的字符串的变量指向同一片内存 5.遍历字符串 forEach函数 const val bookName = "Introduction to algorithms" fun main...= "8.56".toIntOrNull() println(num) } 2.DoubleInt fun main() { //去掉小数 var num = 8.56.toInt...my book.txt").let { it.readText() } println(content) } 总结下它们的区别: 函数 作用域 返回值 let it lambda...结果 aslo it 接收者 run 接收者 lambda结果 apply 接收者 接收者 6.takeIf takeif需要判断lambda中的结果是true还是false,如果是false返回null

40520

如何优雅的实现异常块

但是繁琐的try{}caht嵌套在代码里,看着很不舒服,这里我们不讨论性能,就代码来讲,来看看如何将他隐藏起来。原理是不变的。变得是写法。下面我们来看如何优雅的处理异常块。 在这之前。...Lambda表达式: java8提出:Lambda表达式理解为简洁的表示可传递的匿名函数的一种方式,它没有名称,但它有函数体,参数列表,返回类型。可以抛出一个异常类型。...包装代码逻辑为参数即使用Lambda表达式。 函数式接口: 本质上是只有一个抽象方法的普通接口,可以被隐式的转换为Lambda表达式,需要用注解定义(@FunctionalInterface)。...其实这种思想并不简单的可以做捕获异常的处理, 我们来看一个Demo-> 文本文件转换为字符串: 在我看来;将文本文件转换为字符串,我们需要使用高级流包装低级流,然后做缓存读出来。...} } 执行 /** * @return java.lang.String * @Author Liruilong * @Description 文件字符串

99130

解毒 Kotlin Koans: 02 震惊!你的 Java 代码居然被转换成了这样...

那么这事儿就成啦: start() 既然这样,我们除了可以有上一回提到的两种普通解法之外,还应该有以下几种高端解法: 默认参数法: fun start(str: String = "OK") = str Lambda...我们今天按照 Kotlin Koan 给出的顺序,要解毒的就是下面这道题: 把下面这段 Java 代码转换为 Kotlin 代码: public class JavaCode { public String...从此以后,我就成了 Kotlin 大神,反正只要用工具把 Java 代码一下就好啦,还学什么学 >.<! 2....什么玩意,空指针啊 后来我就经常需要将原来用 Java 编写的 Activity 转换为 Kotlin 版本的,例如: public class TestActivity extends Activity...= ", ", prefix = "[", postfix = "]") 不就是拼接字符串么,还用得着亲自动手?

71220

以行为参数化为指导思想,以Lambda表达式为表达方式,以函数式接口为实现手法去实现它

主动处理中繁琐的try{}caht嵌套在代码里,看着很不舒服 这里我们不讨论性能,就代码来讲,来看看如何将他隐藏起来。原理是不变的。变得是写法。下面我们来看如何优雅的处理异常块。...Lambda表达式 java8提出:Lambda表达式理解为简洁的表示可传递的匿名函数的一种方式,它没有名称,但它有函数体,参数列表,返回类型。可以抛出一个异常类型。...包装代码逻辑为参数即使用Lambda表达式。 函数式接口: 本质上是只有一个抽象方法的普通接口,可以被隐式的转换为Lambda表达式,需要用注解定义(@FunctionalInterface)。...其实这种思想并不简单的可以做捕获异常的处理, 我们来看一个Demo 文本文件转换为字符串: 在我看来;将文本文件转换为字符串,我们需要使用高级流包装低级流,然后做缓存读出来。...} 如何使用这个定义好的行为 /** * @return java.lang.String * @Author Liruilong * @Description 文件字符串

81220

kotlin基础--List、Set、Map

上次我们学习了kotlin字符串操作、数字类型、标准库函数,接下来我们来学习集合,和其他变量类型一样,集合也分为可变和只读 一、List 1.List集合创建与元素获取 调用listOf函数创建集合,...还提供了安全索引取值函数,使用它们就不会下标溢出了 getOrElse:如果不存在,则返回lambda结果 fun main() { //listOf创建List集合 var list...mutableList = mutableListOf("张三", "李四", "王五") mutableList += "孙七" mutableList -= "王五" } 还可以基于lambda...val set = mutableSetOf("张三", "李四", "王五") set += "赵四" println(set.elementAt(1)) } 3.ListSet...对应的值,不存在返回null getValue,读取key对应的值,不存在抛异常 getOrDefault,读取key对应的值,不存在返回默认值 getOrElse,读取key对应的值,不存在返回lambda

60710

阿里云大神亲码“Kotlin深度笔记”,不讲一句废话,全是精华

,可能导致一部分公司放弃Java 当前已经有许多公司的招聘要求中,要求开发人员需要会kotlin kotlin的学习成本并不是很高,从Javakotlin,一般一周时间就足以完成,且kotlin与Java...表达式 主要内容:函数、高阶函数与 lambda 表达式 image.png 5.其它 主要内容:多重申明,Ranges,类型检查和自动转换,This表达式,等式,运算符重载,空安全,异常,注解,反射,...定义常量与变量 null 声明 空判断 字符串拼接 三元表达式 多重条件 更灵活的 case 语句 for 循环 更方便的集合操作 遍历 方法定义 constructor 构造器 Get Set 构造器...函数类型,高阶函数,Lambda,它们分别是什么?...为什么要引入 Lambda 和 高阶函数? 带接收者(Receiver)的函数类型:A.

1.1K10

Kotlin-Android的另一番风味

)、甜(富含糖份Lambda),第二主要食材,切好块状 Java,少量,Kotlin这种食材需要它来做引子 锅,AndroidStudio、Eclipse这两个牌子的锅质量都不错 调味料,Kotlin...       defaultValue    } } fun main(args: Array) {    println("1".toIntSafely()) } String ...另lambda里面不能写return,最后一行的值就是返回值 从数学函数角度抽象理解 函数: y = f(x) 假设x与y都是Int类型 可以理解为 Kotlin 函数: fun f(x: Int):...{ x: Int -> 1 } 使用时f(1),但是如果像上述那种f(x)的kotlin函数与f(x)的lambda同时同名同方法签名存在,使用上要f(1)与f.invoke(1)来区分是函数调用还是lambda...调用 假设x与y都是Lambda类型 x是Lambda类型 (Int) -> Int ,y是Lambda类型 (Int) -> Int,可以换算成 fun f(x: (Int) -> Int): (Int

10K60

KotlinKotlin 函数总结 ( 具名函数 | 匿名函数 | Lambda 表达式 | 闭包 | 内联函数 | 函数引用 )

必须按照定义的顺序传递 , 如果使用 具名参数 , 可以不必按照参数顺序传递参数 ; 代码示例 : 在下面的代码中 , 函数参数为 name: String, age: Int , 先传递 String 类型值 , 然后再传递...* * @param reason一个解释为什么缺少实现的字符串。...表达式 上 , 也就是匿名函数中 , 会提示 Lambda argument should be moved out of parentheses 参数应该移出圆括号 Kotlin 建议我们移除 Lambda...action: (String, Int) -> String) { val act = action(name, age); println(act) } 将字节码转换为...---- Kotlin 中引入 函数类型 , 将 匿名函数 / Lambda 表达式 / 闭包 作为 函数参数 或 返回值 , 可以写出 更加灵活的代码 ; Java 8 开始 支持 Lambda 表达式

1.6K20

隔壁老王都熟练使用函数式接口了,你还在等什么?(快来收藏)

函数式接口 1.函数式接口的由来   我们知道使用Lambda表达式的前提是需要有函数式接口,而Lambda表达式使用时不关心接口名,抽象方法名。只关心抽象方法的参数列表和返回值类型。...2.1 Supplier   无参有返回值的接口,对于的Lambda表达式需要提供一个返回数据的类型。...* * @param t the input argument */ void accept(T t); } 使用:将输入的数据统一换为小写输出 public...consumer.accept("Hello World"); } } 默认方法:andThen   如果一个方法的参数和返回值全部是Consumer类型,那么就可以实现效果,消费一个数据的时候,首先做一个操作,然后再做一个操作...param t the function argument * @return the function result */ R apply(T t); } 使用:传递进入一个字符串返回一个数字

23010

Python体系练手项目200例(附源代码),练完可显著提升python水平(鲲鹏编程–Python教育新物种)

1.十二 2.十八 3 十十六 4.字符串字节 5.转为字符串 6.十 ASCII 7.ASCII 十 8.转为字典 9.转为浮点类型 10.转为整型 11....将十进制转换为二进制: >>> bin(10) '0b1010' 2.十八 十进制转换为八进制: >>> oct(9) '0o11' 3 十十六 十进制转换为十六进制: >>> hex...(15) '0xf' 4.字符串字节 字符串换为字节类型 >>> s = "apple" >>> bytes(s,encoding='utf-8') b'apple' 5.转为字符串 字符类型...、数值型等转换为字符串类型 >>> i = 100 >>> str(i) '100' 6.十 ASCII 十进制整数对应的 ASCII 字符 chr(65) ‘A’ 7.ASCII...[1,2])) { 'a': 1, 'b': 2} >>> dict([('a',1),('b',2)]) { 'a': 1, 'b': 2} 9.转为浮点类型 整数或数值型字符串换为浮点数

3.3K30

学习Lambda表达式(三):函数式接口

函数式接口的由来 我们知道使用Lambda表达式的前提是需要有函数式接口,而Lambda表达式使用时不关心接口名,抽象方法名。只关心抽象方法的参数列表和返回值类型。...2.1 Supplier 无参有返回值的接口,对于的Lambda表达式需要提供一个返回数据的类型。...* * @param t the input argument */ void accept(T t);}使用:将输入的数据统一换为小写输出public class ConsumerTest...consumer.accept("Hello World"); }}默认方法:andThen 如果一个方法的参数和返回值全部是Consumer类型,那么就可以实现效果,消费一个数据的时候,首先做一个操作,然后再做一个操作...* @param t the function argument * @return the function result */ R apply(T t);}使用:传递进入一个字符串返回一个数字

49900

前沿 | 为什么我要改用Kotlin

那我们接下来看一看Kotlin的特点,当然这也是我改用Kotlin的重要原因。 语法简单,不啰嗦 Kotlin支持类型推断,没有Java那样的啰嗦。...Lambda, 高阶函数,Streams API, 函数式编程支持 所谓的Lambda表达式是匿名函数,这使得我们的代码会更加的简单。比如下面的代码就是lambda的应用。...字符串模板 无论是Java还是Android开发,我们都会用到字符串拼接,比如进行日志输出等等。...在Kotlin中,字符串模板是支持的,我们可以很轻松的完成一个字符串数组的组成 注意:关于字符串拼接可以参考这篇文章Java细节:字符串的拼接 与Java交互性好 Kotlin和Java都属于基于JVM...现在好了,有了Google的支持,KotlinAndroid相信在不久的将来就会全面展开。

61910
领券