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

Kotlin函数

这里等待后面具体来看什么时候非内联 在 Kotlin ,我们可以只使用一个正常、非限定 return 来退出一个命名或匿名函数。...我们习惯了在循环中用这种结构,其内联函数通常包含: fun hasZeros(ints: List): Boolean { ints.forEach { if (it...shouldFilter = it > 0 return@filter shouldFilter } 请注意,如果一个函数接受另一个函数作为最后一个参数,lambda 表达式参数可以在圆括号参数列表之外传递...这意味着 lambda 表达式 return 将从包含它函数返回,而匿名函数 return 将从匿名函数自身返回。...可以实现dsl风格代码全靠它 Kotlin 提供了使用指定 接收者对象 调用函数字面值功能。 可以调用该接收者对象上方法而无需任何额外限定符,可以任意调用接受者方法和属性。

2.3K40

浅谈Kotlin函数

本文简单谈下Kotlin函数,包括表达式函数体,命名参数,默认参数,顶层函数,扩展函数,局部函数,Lambda表达式,成员引用,with/apply函数等。...1.表达式函数体 通过下面这个简单例子看下函数声明相关概念,函数声明关键字是fun,嗯,比JSfunction还简单。 Kotlin参数类型是放在变量:后面,函数返回类型也是。...,相比Java, Kotlin可以类似于JavaScript带命名参数进行调用,而且可以不用按函数声明顺序进行调用,可以打乱顺序,比如下面: joinToString(separator = "...4.顶层函数 不同于Java函数只能定义在每个类里面,Kotlin采用了JavaScript 做法,可以在文件任意位置处定义函数,这种函数称为顶层函数。...,在Java可以抽取出独立函数,但这样有时候对整体结构并不太好,Kotlin提供了局部函数来解决这个问题。

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

Kotlin内联函数

Kotlin内联函数还是挺好玩 为什么需要内联函数? lambda 表达式会被正常地编译成匿名类。这表示每调用一次 lambda表达式,一个额外类就会被创建。...内联函数使用 inline 修饰符标记,内联函数在 被使用时候编译器并不会生成函数调用代码,而是使用函数实现真实代码替换每一次函数调用 内联函数如何运作?...当一个函数被声明为 inline 时,它函数体是内联一一换句话说,函数体会被直接替换到函数被调用地方,而不是被正常调用。...Int、Long、Double都继承自Number,但是,如果我们在调用上面的函数时,传入了Array,这样是会报错!!...因为 kotlin在调用函数时要求参数类名必须完全一致!! 对于上面的函数,如果我们想既可以接收 Array, 也可以接收Array, 那么就可以定义一个具体化类型参数内联函数.

1.5K20

如何将 Java 8 流转换为数组

问题 Java 8 ,什么是将流转换为数组最简单方式?...String[] stringArray = stringStream.toArray(size -> new String[size]); 其中 IntFunction generator 目的是将数组长度放到到一个新数组中去...我们县创建一个带有 Stream.of 方法 Stream,并将其用 mapToInt 将 Stream 转换为 IntStream,接着再调用 IntStream toArray...紧接着也是一样,只需要使用 IntStream 即可; int[]array2 = IntStream.rangeClosed(1, 10).toArray(); 回答 3 利用如下代码即可轻松将一个流转换为一个数组...然后我们在这个流上就可以进行一系列操作了: Stream myNewStream = stringStream.map(s -> s.toUpperCase()); 最后,我们使用就可以使用如下方法将其转换为数组

3.9K10

Kotlin高阶函数深入讲解

前言 在Kotlin,高阶函数是指将一个函数作为另一个函数参数或者返回值。如果用f(x)、g(x)用来表示两个函数,那么高阶函数可以表示为f(g(x))。...Kotlin为开发者提供了丰富高阶函数,比如Standard.ktlet、with、apply等,_Collectioins.ktforEach等。...Kotlin 使用类似 (Int) – String 一系列函数类型来处理函数声明,这些类型具有与函数签名相对应特殊表示法,即它们参数和返回值: 所有函数类型都有一个圆括号括起来参数类型列表以及一个返回类型...参数类型列表可以为空,如 () – A ,返回值为空,如(A, B) – Unit; 函数类型可以有一个额外接收者类型,它在表示法点之前指定,如类型 A....常用高阶函数 Kotlin提供了很多高阶函数,这里根据这些高阶函数所在文件位置,分别进行介绍,先来看一下常用高阶函数,这些高阶函数在Standard.kt文件

1.1K20

kotlin Standard内联函数示例详解

let、with、run、apply、also、takeIf、takeUnless、repeat函数使用 kotlin Standard.kt文件,提供了一些内联函数,这些内联函数可以减少代码量,...观察函数定义可以发现,run函数为一个扩展函数,而其接受参数和with函数第二个参数相同,run函数可以理解为let函数和with函数结合体。...int类型数据times,和一个入参为int类型,无返回值lambda函数action,并通过for循环重复调用times次action函数 函数一般结构如下: repeat(int){...todo } 使用实例: //快速为list添加十条数据 var list = ArrayList<User () repeat(10){ list.add(User()) } 适用场景:该函数可以用来避免写循环语句...结语: Kotlin Standard.kt标准库函数已基本讲解完毕,其中涉及到了高阶函数和lambda函数,相关知识可通过官方文档学习,同时建议读者将每个函数都实际敲一遍,并通过查看他们编译后

65610

Kotlinsam(函数式接口)详解

用lambda表达式去表示java匿名类实例 在使用java去给一个按钮设置监听我们通常会通过创建匿名类实例,如下 Button.setOnClickListener(new OnClickListener...OnClickListener接口只有一个抽象方法,这种接口在kotlin中被当作函数式接口,或者SAM接口,SAM代表单抽象方法,类似的还有像Runnable和Callable这样函数式接口....SAM构造方法:显式地把lambda转换成函数式接口. 在有的方法需要返回一个函数式接口,不能返回一个lambda, 可以用SAM构造方法把它包装起来....SAM构造方法只接收一个参数-一个被用作函数式接口单抽象方法体lambda,并返回一个接口类实例....另外除了返回值通过lambda创建函数式接口外,也可以把lambda生成函数式接口放在一个变量,如下 val listener = OnClickListener{ view - val text

1.6K40

Kotlin】集合操作 ② ( MutableList 可变列表集合 | 修改 MutableList 集合 mutator 函数 )

文章目录 一、MutableList 可变列表集合 二、修改 MutableList 集合 mutator 函数 1、添加元素运算符 += 和 删除元素运算符 -= 2、通过 Lambda 表达式筛选要删除元素...一、MutableList 可变列表集合 ---- 使用 listOf 函数 创建 List 集合 是 只读列表集合 ; 使用 mutableListOf 函数 创建 MutableList 集合...是 可变列表集合 ; 调用 MutableList#toList 函数 , 可以 将 可变列表集合 转为 只读列表集合 ; 调用 List#toMutableList 函数 , 可以 将 只读列表集合...: MutableList = list.toMutableList() } 执行结果 : [Jerry, Jack] 二、修改 MutableList 集合 mutator 函数 -...--- 修改 MutableList 集合 函数 统称为 mutator 函数 ; 1、添加元素运算符 += 和 删除元素运算符 -= 运算符重载 : MutableList 集合 还有一些 运算符重载

71630

Kotlin内联函数作用是什么?

在以前,因为学过一段时间Kotlin(并没有实际开发中用过),很多东西都忘记了,但是kotlin代码看起来其实和Java没什么区别,感觉都差不多。所以不要认为 Kotlin 很难学。...首先,什么是内联函数 inline? Kotlin内联函数属于Kotlin高级特性之一,使用起来也非常简单。...没加 inline 之前 加上 inline 之后 解释就不用多说了吧,kotlin 自动帮我们将方法在编译期就加在了相应调用处,免除了 java 入方法栈与退栈。...非局部返回标记 为了不让lamba表达式直接返回内联函数,所做标记 相关知识点:我们都知道,kotlin,如果一个函数,存在一个lambda表达式,在该lambda不支持直接通过return...reified java,不能直接使用泛型类型 kotlin可以直接使用泛型类型 inline fun startActivity() { startActivity(Intent(this

1.3K10

Kotlin扩展函数与属性示例详解

前言 Kotlin 扩展方法并不是在原类内部进行拓展,通过反编译为Java代码,可以发现,其原理是使用装饰模式,对源类实例操作和包装,其实际相当于我们在 Java定义工具类方法,并且该工具类方法是使用调用者为第一个参数...,然后在工具方法操作该调用者; 理论上来说,扩展函数很简单,它就是一个类成员函数,不过定义在类外面。...不管String类是用Java、Kotlin,或者像Groovy其他JVM语言编写,只要它会编译为Java类,就可以为这个类添加自己扩展。 在这个扩展函数,可以像其他成员函数一样用this。...Kotlin允许用和导入类一样语法来导入单个函数: import strings.lastChar //星号导入 import strings.* 3.3.2在Java调用扩展函数 其实,扩展函数是静态函数...调用扩展函数,不会创建适配对象或者任何运行时额外消耗。 这使得从Java调用Kotlin扩展函数变得非常简单:调用这个静态函数,然后把接收对象作为第一个参数传进去即可。

1.3K20

Kotlin内置函数用法和区别总结

前言 在Kotlin源码标准库(Standard.kt)中提供了一些Kotlin扩展内置函数可以优化kotlin编码。Standard.kt是Kotlin一部分,它定义了一些基本函数。...本文主要记录kotlinlet、apply、run、also、with等函数用法和区别,下面话不多说了,来一起看看详细介绍吧 0. let val a = "hello,kotlin".let{...= block(this) 解释:调用 “hello,kotlinlet函数,it在作用域中替代该对象(hello,kotlin),默认返回函数最后一行 1. apply val a = "hello...指定T作为闭包receiver,使用参数闭包返回结果。...以上,注意阅读Kotlin相关高阶函数源码时候,如果函数中最后一个参数为闭包,那么最后一个参可以不写在括号,而写在括号后面,如果只有一个参数,括号也可以去掉。

87020

Kotlin高阶函数(一等公民)

下面我们来说说 Kotlin高阶函数 Kotlin 不是纯粹面向对象语言, Kotlin 函数也是一等公民,因此函数本身也具有自己 类型 。...函数类型就像前面介绍数据类型一样,既可用于定义变量,也可用作函数形参类 型,还可作为函数返回值类型 使用函数类型 Kotlin 每个函数都有特定类型,函数类型由函数形参列表、 ·>和返回值类型组成...fun test() { .... } 该函数形参列表、 ·>和返回值类型为() ->Unit 或(),这就是该函数类型 。...使用函数类型作为形参类型 Kotiin 支持像使用其他类型一样使用函数类型,因此完全可以在函数定义函数类型形 参 例子 //定义函数类型形参,其中 fn 是( Int )→ Int 类型形参 fun...着每次调用函数时都可动态传入一个函数,随着实际传入函数改变,就可以动态改变 map() 函数部分计算代码 。

65710

如何将字符串子字符串替换为给定字符串?php strtr()函数怎么用?

如何将字符串子字符串替换为给定字符串? strtr()函数是PHP内置函数,用于将字符串子字符串替换为给定字符串。...该函数返回已转换字符串;如果from和to参数长度不同,则会被格式化为最短长度;如果array参数包含一个空字符串键名,则返回FALSE。 php strtr()函数怎么用?...规定要转换字符串。 ● from:必需(除非使用数组)。规定要改变字符(或子字符串)。 ● to:必需(除非使用数组)。规定要改变为字符(或字符串)。...一个数组,其中键名是原始字符,键值是目标字符。 返回值 返回已转换字符串。...如果 from 和 to 参数长度不同,则会被格式化为最短长度;如果 array 参数包含一个空字符串("")键名,则返回 FALSE。

5.2K70
领券