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

Kotlin | 3.函数的定义与调用

本章内容包括: 用于处理集合、字符串和正则表达式的函数 使用命名参数、默认参数,以及中辍调用的语法 通过扩展函数和属性来适配Java库 使用顶层函数、局部函数和属性架构代码 1、在Kotlin创建集合...* 中辍调用没有添加额外的分隔符,函数名称是直接放在目标对象名称和参数之间的。...Kotlin 允许更灵活的代码结构:函数和属性都可以直接在文件声明,而不仅仅在作为成员。...Kotlin 可以用扩展函数和属性来扩展任何类的API,包括在外部定义的类,而不需要修改其源代码,也没有运行时的开销。 中辍调用提供了处理单个参数的,类似调用运算符方法的简明语法。...Koltin 为普通字符串和正则表达式都提供了大量的方便字符串处理的函数。 三重引号的字符串提供了一种简洁的方式,解决了原本在Java需要进行大量啰嗦的转义和字符串连接的问题。

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

3. 类型声明与空安全(Void Safety)

上一篇文章介绍了 Koltin 的声明类型语法,但我有意避开了 Kotlin 类型系统里最重要的部分:空安全(Void Safety/Null Safety)。...里面代码逻辑混乱,业务和通用代码耦合在了一起。你想过重构,但功能实在太多了,需要很长的时间,且现在功能也比较稳定了,重构的收益对业务增长没有明显帮助。那还是先打个补丁呗。...这导致了在空判断时非空,但进入 if 代码块之后,线程被切换了,上层调用了release(),等线程再切回来的时候 mAudioPlayer 已经变成 null 了,再执行就出现了空指针错误。...我们来看下面这段代码: Nullable.kt: fun main() { var string1: String = "123" // ok string1 = "456" // ok...回到场景 如果用 Kotlin 来实现场景代码,只需要将 mAudioPlayer 声明为可空类型就可以了: PlayerController.kt: /** * 用户音频 ugc 播放器。

98950

Kotlin与Java的异同(一)

语句和表达式的区别在于,表达式有值,并且能作为另一个表达式的一部分使用;而语句总是包围着它的的代码的顶层元素,并且没有自己的值。在Java ,所有的控制结构都是语句。...默认情况下,应该尽可能地使用 val 关键字 来声明所有的 Kotlin 变量,仅在必要的时候换成var。使用不可变引用、不可变对象及无副作用的函数让代码更接近函数式编程风格。...静态工具类 顶层函数(静态函数) Kotlin: Kotlin 的新定义:顶层函数,也就是把函数直接放到代码文件的顶层,不用从属于任何的类。...实例:把 joinToString 直接放到 strings 的包,创建一个名为 Join.kt文件。...文件路径格式: "/users/wangjiang/koltin-book/chapter.adoc" "/users/wangjiang/koltin-book/" 目录 "chapter" 文件

1.7K20

了解 Kotlin Flow(一)

最近了解了一下 Koltin Flow 相关的一些内容。在这里做一些简单的总结。...collect 1 cancel 这里当collect到2的时候下游抛出了一个异常,从预期上来讲,数据流出现异常应该终止,如果没有上面的这个机制,实际上的输出会变成 collect 1 collect...(2) } } 这种情况会在 checkContext 里面调用 transitiveCoroutineParent 进行判断: // SafeCollector.common.kt internal...在日常开发,普通的 Flow API 只能有一个 collect 的地方,并不能满足我们的需求,所以 Kotlin 还提供了更丰富的 APIStateFlow 和 SharedFlow。...这里的状态是允许重复响应的,例如一个 TextView 显示的值是 200,那么即使 页面发生了重建,这个值仍然显示的是 200。

97510

JVM 上数据处理语言的竞争:Kotlin, Scala 和 SPL

Scala的设计初衷是整合现代编程范式的通用开发语言,实践主要用于后端大数据处理,其他类型的项目中很少出现,通用性不如Kotlin。...Scala两种范式都支持,面向对象编程比Koltin更彻底,函数式编程也比Koltin方便些。SPL可以说不算支持面向对象编程,有对象概念,但没有继承重载这些内容,函数式编程比Kotlin更方便。...代码比较 以规范的CSV文件为例,比较三种语言的解析代码。...也可以用OpenCSV等类库读取,数据类型虽然不用在代码解析,但要在配置文件定义,实现过程不见得简单。...Kotlin支持多种格式的文件,理论上能够进行中间数据的存储和再计算,但因为在数据处理方面不专业,基本的读写操作都要写大段代码,相当于并没有自有的存储格式。

2.3K100

还在用kapt吗? 试试ksp吧 | 项目复盘

同时由于ksp的依赖于kotlin plugin 1.4.30版本,所以我们要对kt插件版本也进行一次升级。 build.gradle.kts下添加如下代码即可。...这里的ksp就是负责生成的META-INF文件夹的,编译流程其实atuoservice其实还是有很多地方被使用到的。...java的jar包并不止有.class还有META-INFO,这个文件夹会附带一些额外的信息。举个例子,koltin的版本信息就是放在这个文件夹下面的。...init方法获取构造的一些关键参数以及写入文件路径等等。process则是让我们可以获取到当前的抽象语法树,之后获取到所有加了路由注解的相应的语法树,之后进行后续开发了。下面我们看下代码吧。...,判断当前语法是不是有java的注解,如果有则抛出异常。

89850

Kotlin与Java互操作

平台类型标识法 如上所述,平台类型不能在程序显式表述,因此在语言中没有相应语法。 然而,编译器和 IDE 有时需要(在错误信息、参数信息中等)显示他们,Koltin提供助记符来表示他们: T!...首先,新建一个kt类,并添加如下代码。...在类以及在顶层的)属性在 Java 中会成为静态字段,首先新建一个kt文件。...受检异常 如上所述,Kotlin 没有受检异常。 所以,通常 Kotlin 函数的 Java 签名不会声明抛出异常, 于是如果我们有一个这样的 Kotlin 函数。首先,新建一个kt文件。...当它作为参数出现时,为了让 Kotlin 的 API 在 Java 工作,对于协变定义的 Box 我们生成 Box 作为 Box // 作为返回类型——没有通配符 Box boxDerived

3.4K30

不要用Java的语法思维来写Kotlin

不要用Java的语法思维来写Kotlin,不要让kotlin的优雅埋没。如果你没有Java开发经验,下面的内容也对你会有帮助。。。 1.尽可能的少用 !!...个人感觉对于Null的检查是Koltin语法糖的东西了,强制在编码过程中考虑空指针,因此《十亿美元的错误》,也许你不会再有这个机会犯错了(也许可以说成,你赚了十亿美金 ^_^)。...is在声明属性的同一模块执行; 不适用于open的属性,或者具有自定义getter的属性! var局部变量—适用于变量在类型检查和使用之间没有修改,且不在修改它的lambda捕获!...函数的返回值可以是null 8.真的要习惯Koltin的for循环,太强大了 Kotlin没有Java的for(初始值;条件;增减步长)这个规则。...不要用Java的语法思维来写Kotlin!

3K40

写了多年的Java,直到看到Kotlin,原来代码可以如此优雅!

不要用Java的语法思维来写Kotlin,不要让kotlin的优雅埋没。如果你没有Java开发经验,下面的内容也对你会有帮助。。。 1.尽可能的少用 !!...个人感觉对于Null的检查是Koltin语法糖的东西了,强制在编码过程中考虑空指针,因此 《十亿美元的错误》 ,也许你不会再有这个机会犯错了(也许可以说成,你赚了十亿美金 _ )。...is操作符,会自动插入类型转换代码: if (a !...is在声明属性的同一模块执行; 不适用于open的属性,或者具有自定义getter的属性! var局部变量—适用于变量在类型检查和使用之间没有修改,且不在修改它的lambda捕获!...函数的返回值可以是null 8.真的要习惯Koltin的for循环,太强大了 Kotlin没有Java的for(初始值;条件;增减步长)这个规则。

3.3K40

Linux 的 cat 命令居然有那么多门道,涨知识了!

在开始之前,我们先来看下cat的手册页显示的内容: man cat 1.查看文件内容 语法: $ cat [filename] 例如: cat wljlsmz-cat-test 输出: 2....CTRL+d后我们验证一下有没有创建完成: 5.文件间内容复制 文件间内容的复制也是出场率比较多的场景,使用cat命令也可以实现: $ cat [要复制其内容的文件名] > [目标文件名] 例如:...6.突出行尾 突出行尾在日常工作也是常用的,比如某个配置文件一行一行很长,需要突出每一行的行尾,这个时候能够再cat的时候突出行尾的话就非常棒了。...8.仅在非空行上显示行号 在上面我们介绍了使用-n参数打印行号,又介绍了使用-s可以去除重复的空行,那么对于重复空行的文件,怎么仅显示非空行的行号呢?...显示文件内容并显示行号 创建文件并且写入内容 文件间内容复制 突出行尾 去除重复空行 仅在非空行上显示行号

61610

Spring学习笔记(十九)——springboot Web开发和模板引擎thymeleaf语法使用

--th:text 将div里面的文本内容设置为 --> 这是显示欢迎信息 3、语法规则 参照:https...代码块表达式 支持两种语法结构 推荐:~{templatename::fragmentname} 支持:~{templatename::#id} templatename:模版名,Thymeleaf...th:insert:将代码块片段整个插入到使用了th:insert的HTML标签, th:replace:将代码块片段整个替换使用了th:replace的HTML标签, th:include:将代码块片段包含的内容插入到使用了...; 2)、使用ResourceBundleMessageSource管理国际化资源文件 3)、在页面使用fmt:message取出国际化内容 步骤: 1)、编写国际化配置文件,抽取页面需要显示的国际化消息...public文件夹,在public文件夹下的html文件可以通过浏览器输入文件+后缀名的方式直接访问的.

79720

《Kotin 极简教程》第15章 Kotlin 文件IO操作、正则表达式与多线程第15章 Kotlin 文件IO操作与多线程《Kotlin极简教程》正式上架:

Kotlin 的封装终端IO 的类在 stdlib/src/kotlin/io/Console.kt文件。...15.3 文件 IO 操作 Kotlin为java.io.File提供了大量好用的扩展函数,这些扩展函数主要在下面三个源文件: kotlin/io/files/FileTreeWalk.kt kotlin...它们主要在下面的两个源文件: kotlin/io/IOStreams.kt kotlin/io/ReadWrite.kt Koltin 的序列化直接采用的 Java 的序列化类的类型别名: internal...,目前还没有对 String 类和 Process 扩展这样的函数。...Kotlin没有volatile关键字。 Kotlin的Any类似于Java的Object,但是没有wait(),notify()和notifyAll() 方法。

3.3K20

vscode开发插件推荐第一节

在 VS Code ,单击左侧的扩展,然后搜索扩展并单击安装。 首先,我希望您启用了 Dart 和 Flutter 扩展,如果没有,您可以从这里获取它们:Dart和Flutter。...Error lens 错误镜头有助于使诊断更加突出,在语言生成诊断的任何地方突出显示整行,并内联打印消息。...Todo Tree Gruntfuggly 的 Todo Tree 非常方便,不仅在 flutter ,而且在 VS Code 也是如此。...它在资源管理器的 Treeview 显示代码的所有 TODO 和 FIXME 标签,从而帮助我们直接解决它们,而无需在代码手动搜索它们,节省了大量时间。...Path Autocomplete 这是一个非常有用的扩展,它可以为您的文件文件夹提供路径补全。这使得将图像或任何资源添加到我们的文件变得更加容易。

1.1K20

如何在 TypeScript 中使用函数

除了为函数提供额外的文档外,类型信息还可以减少代码出现错误的机会,因为将无效数据类型传递给类型安全函数的风险较低。...以下代码显示了一般语法突出显示了类型声明: function functionName(param1: Param1Type, param2: Param2Type): ReturnType {...''}${user.firstName} ${user.lastName}`; } 在此代码块的第一个突出显示部分,我们正在向函数添加一个可选的前缀参数,在第二个突出显示部分,我们将使用它作为用户全名的前缀...''}${user.firstName} ${user.lastName}`; 如果我们想明确说明函数的返回类型,可以在 () 之后添加它,如以下代码突出显示代码所示: const getUserFullName...这样做会导致 TypeScript 编译器发出错误 1375: 输出'await' 表达式仅在文件是模块时才允许在文件的顶层使用,但该文件没有导入或导出。

15K10

Kotlin入门(2)让App开发变得更容易

我们可以把Kotlin看作是Java的升级版,它不但完全兼容Java,而且极大精简了代码语法,从而使开发者专注于业务逻辑的编码,无需在繁琐的代码框架之间周旋。...这里填上Activity的名称EasyActivity,对应的布局文件名则为activity_easy,最后单击“Finish”按钮完成EasyActivity.kt的创建。...比如现在有个名为tv_hello的TextView控件,准备在代码把tv_hello的显示文本改为“你好呀”,这用Java编码的话即是下面两行代码: TextView tv_hello =...首先在EasyActivity.kt代码开头补充下面一行: import kotlinx.android.synthetic.main.activity_easy.* 这行导入语句的目的是引进Kotlin...比如修改TextView的显示文本,采用Kotlin编码只要下面一行: tv_hello.setText("你好呀") 如此一来,原来的两行代码精简到一行代码,去掉了原先获取控件对象的冗余代码

1.2K30
领券