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

开源|携程机票 App KMM 跨端 KV 存储库 MMKV-Kotlin

在 Java 版本,写函数一系列 encode 重载函数或统一命名为 putXXX,其中 putXXX 内部调用了 encode 函数,二者只是返回类型不同,读函数统一命名为 decodeXXX ...而 Objective-C 版本,写函数统一命名为 setXXX 函数,读函数统一命名为 getXXX 函数。虽然平台不同,但是具有相同功能函数参数数量、类型,以及返回类型都高度统一。...通常情况下我们只需要在 common source set 编写一套单元测试代码,而平台相关 source set 甚至无需添加任何代码即可完成单元测试构建。...,最后还需要编写仅 iOS 平台支持 NSDate 与 NSCoding 类型测试(代码在上面的示例中省略),单元测试即构建完成。...我们除了测试了通用类型及 Android 平台特定 Parcelable 外,还添加了对 Android 平台跨进程访问测试,即 testIPCUpdateInt 与 testIPCLock 函数

1.6K20

开始切换到 Kotlin: 谷歌工程师给初学者知识点总结

在 Android Studio Profiler 团队内部,我们是通过几个步骤克服了这个问题,第一步是要求所有的单元测试使用 Kotlin 编写。...IDE 功能: 把 Java 文件转换成 Kotlin 文件 如果您使用 Android Studio 开发程序,学习 Kotlin 最简单方法是使用 Java 语言编写单元测试,然后在Android...两种语言高阶对比 Java 与 Kotlin 在高阶角度来看是非常相似的,下面是分别使用 Java 与 Kotlin 编写基本单元测试代码。...没有 new 关键字构造函数 Kotlin 不需要使用 new 关键字调用构造函数。...顺便说一句,在 Java 函数参数类型是可变,但是可以使用 final 关键字修改为不可变。在 Kotlin 函数参数始终是不可变,它们是被 val 关键字隐式地标记为不可变。

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

Android协程7个必要知识点

上下文与调度器: 理解协程上下文概念,包括调度器(Dispatcher)作用,如何在不同线程上执行协程代码。 挂起函数: 掌握挂起函数概念,以及如何在协程调用和编写挂起函数。...下面将详细介绍挂起函数概念,以及如何在协程调用和编写挂起函数,并学会处理异常和错误。...通过掌握挂起函数调用、编写和异常处理,你可以更好地在协程处理异步操作,确保代码可靠性和稳定性。 协程作用域 在异步编程,协程生命周期和范围管理是至关重要。...通道有不同类型,例如无限容量通道和有限容量通道。发送数据使用send函数,接收数据使用receive函数。...Kotlin Coroutine我们提供了一种优雅方式来处理异步操作,同时避免阻塞主线程。下面将介绍如何在Android应用中使用协程处理UI操作,确保用户界面的流畅和响应。

45441

初探Kotlin+SpringBoot联合编程

Kotlin具有的很多静态语言特性诸如:类型判断、多范式、扩展函数、模式匹配等等让我无法只作为一个吃瓜群众了,所以稍微花了点时间了解了一下该语言。 ?...Kotlin具有的很多静态语言特性诸如:类型判断、多范式、扩展函数、模式匹配等等让我无法只作为一个吃瓜群众了,所以稍微花了点时间了解了一下该语言。...:kotlin-noarg是无参(no-arg)编译器插件,它为具有特定注解类生成一个额外零参数构造函数。...我们使用Kotlin 调用JavaSpring AOP框架和库,需要类 open(可被继承实现),而Kotlin 类和函数都是默认 final ,这样我们需要为每个类和函数前面加上open修饰符。...例如,当我们使用 Spring 时,就不需要打开所有的类,跟我们在Java写代码一样,只需要用相应注解标注即可, @Configuration 或 @Service。

63670

Room & Kotlin 符号处理

Kotlin 和 Java 可以互操作,但模式却不相同,例如,Kotlin 特殊类类型 Kotlin 值类或者 Java 静态方法。...现有的 Room 代码库是为了处理 Java 源代码而写。当应用是由 Kotlin 编写时,Room 只能识别该 Kotlin 在 Java 存根样子。...例如,Kotlin suspend 函数在编译时生成如下签名: // kotlin suspend fun foo(bar:Bar):Baz // java Object foo(bar:Bar,...extends Baz>) 保持相同行为,KSP XMethodElement 实现为 suspend 方法合成了一个新参数,以及新返回类型。...为了测试 Kotlin 我们需要另一个库,幸运是有 Kotlin Compile Testing,它允许我们编写针对 Kotlin 测试,而且我们该库贡献了对 KSP 支持。

72530

Kotlin 负责人:我们是如何一步步设计 Kotlin

Kotlin ,对函数 listOf(1) 调用会推断出 List结果类型,因为参数类型给出了类型提示。...然而,对 listOf()  调用,由于既没有参数,也没有上下文中类型,因此无法编译。尽管从技术上讲,它可能被推断 List ,表示此函数可以返回最宽类型。...相反,Kotlin 强制开发人员在调用显式指定类型 istOf() 。这避免了编译器必须猜测开发人员意图,因为这种猜测在实际代码通常是错误,因此可以防止代码中出现进一步错误。...例如,当 Kotlin 协程在 Kotlin 1.3 变得稳定时,它们引入了一个新函数类——挂起函数和相应挂起函数类型。然而,不允许将挂起函数类型用作超类型。...对于如何在运行时表示它们,并同时支持使用 Kotlin is 操作符进行运行时类型检查,需要进行非常复杂设计。

1.2K20

为什么我们要尝试Kotlin

还提供了很多类似字符串模板、标准函数库、运算符重载特性,这些特性使得代码可以非常简洁易读,极大提升了开发者体验。...} 例子是项目上一个用Kotlin编写基于Spring JPARepository,可以看到得益于Interoperable特性,在尝试使用Kotlin时我们可以依赖是一个完整Java生态圈...使用Kotlin编写单元测试 如果你比较保守,那么你可以开始尝试在项目中仅通过Kotlin编写单元测试,同样得益于Interoperable这个特性,我们可以轻松使用KotlinJava类编写单元测试...这样你可以不用担心尝试Kotlin业务代码带来风险,同时也可以在编写单元测试过程尝试Kotlin语言各种特性。...或者直接通过Kotlin编写工具类项目服务。

86750

JetBrains首席语言设计师:我们将如何让Kotlin再活几十年

Kotlin ,对函数 listOf(1) 调用会推断出 List 结果类型,因为参数类型给出了类型提示。...然而,对 listOf()  调用,由于既没有参数,也没有上下文中类型,因此无法编译。尽管从技术上讲,它可能被推断 List ,表示此函数可以返回最宽类型。...相反,Kotlin 强制开发人员在调用显式指定类型 istOf() 。这避免了编译器必须猜测开发人员意图,因为这种猜测在实际代码通常是错误,从而可以防止代码中出现进一步错误。...例如,当 Kotlin 协程在 Kotlin 1.3 变得稳定时,它们引入了一个新函数类——挂起函数和相应挂起函数类型。然而,不允许将挂起函数类型用作超类型。...对于如何在运行时表示它们,并同时支持使用 Kotlin is 操作符进行运行时类型检查,需要进行非常复杂设计。

1.5K10

干货 | 实现一个属于你“语言”-携程Kotlin DSL开发与实践

内部DSL:通常是基于通用编程语言实现,具有特定风格, iOS 依赖管理组件 CocoaPods 和 Android 主流编译工具 Gradle。...在Gradle5.0,官方提供可以选择在项目中生成Groovy或者kotlin DSL构建脚本,并进一步优化代码自动完成、重构和其他 IDE 辅助功能,使用Kotlin DSL IDE 用户带来了极大便利...在我们最近海外支付SDK,采用该种方式构建项目, 部分gradle代码如下: 可以看到使用kotlin编写和groovy编写区别不大,所以即使我们要将现有工程groovy脚本重写kotlin...XML编写后,我们需要findViewById找到控件,再对控件进行操作、赋值;Anko Layout编写过程,可以在布局中就直接做显示隐藏、赋值操作等,同时这种写法也有类型安全、空安全、代码复用性强优势...kotlin扩展函数、高阶函数、lambda表达式、中缀调用、invoke 约定和函数小括号省略等特性,使得Kotlin编写DSL尤为顺畅,我们可以使用这些特性来实现自己“领域特定语言”。

1.5K10

Spring中国教育管理中心-Apache Cassandra Spring 数据教程十四

Kotlin 支持 Kotlin是一种面向 JVM(和其他平台)静态类型语言,它允许编写简洁优雅代码,同时提供与用 Java 编写现有库出色互操作性。...Spring Data Kotlin 提供一流支持,让开发人员几乎可以像编写 Kotlin 原生框架一样编写 Kotlin 应用程序。...这通过可空性声明和“值或无值”语义表达使应用程序更安全,而无需支付包装器成本,例如Optional. (Kotlin 允许使用具有可为空值函数式构造。请参阅Kotlin 空值安全性综合指南。)...Kotlin 对 JSR-305 注释和 Spring 可空性注释支持Kotlin 开发人员提供了整个 Spring Data API 空安全,具有null在编译时处理相关问题优势。...15.4.扩展 Kotlin扩展提供了使用附加功能扩展现有类能力。Spring Data Kotlin API 使用这些扩展现有的 Spring API 添加新 Kotlin 特定便利。

1.6K40

【100 种语言速成】第 5 节:Kotlin

Kotlin 之于 Java 就像 ES6 之于旧式 JavaScript。很多人都被 JavaScript 引擎(浏览器)或 JVM( Android)所困。...Kotlin 有某种“脚本模式”和 REPL,它可以与你 IDE 集成,所以对于每天编写它的人来说,这可能不是问题。...我在代码库包含了一个允许 ./run file.kt 简短脚本。 斐波那契 我们需要一些类型注释,感觉它们应该是可推断,但它们都是完全合理代码。...函数式编程 我们如何在 Kotlin 执行 map、filter 和 reduce ?它看起来像带有{ arguments -> ... }块 Ruby。...还有其他 JVM 语言, JRuby、Clojure、Scala 等,但它们本质上是不同语言,具有不同语义和不同互操作性故事。Kotlin 只是固定 Java,仅此而已。

1.6K51

Kotlin 之美

Kotlin 新增了顶层声明类别(顶层函数和顶层属性,无需放在类属性和方法)。...比如,本文提到 Kotlin DSL,我们 Kotlin DSL 做一个简单定义: “使用 Kotlin 语言开发,解决特定领域问题,具备独特代码结构 API 。”...1 Int 类型,显然 Int 并没有 days() 函数,因此days() 扩展函数,伪代码如下: fun Int.days() = {//逻辑实现} 结合 Java8 Time api,此处将会涉及到两个扩展函数...高阶函数 关于高阶函数定义,参考《Kotlin 实战》: 高阶函数就是以另一个函数作为参数或返回值函数 如果用 lamba 来作为高价函数参数(此时形参),就必须先了解如何声明一个函数形参类型...->Unit){ block(StringBuilder("Kotlin")) } // 调用高阶函数 kotlinDSL { // 这个 lambda 接收者类型StringBuilder

2.9K20

Kotlin 1.4-M1 现已发布!

Kotlin/JVM 编译器现在可在字节码 Java 8 和更高版本生成类型注解。 ☞Kotlin/JS 新后端为生成工件带来大幅提升。...推断 result 变量类型: 在 Kotlin 1.4 ,借助新推理算法,lambda 最后一个表达式可以实现智能转换,并且这种更精确类型用于推断结果 lambda 类型。...在以下示例,可以将 String 类型 @Foo 注解发出到字节码,然后由库代码使用: 有关如何在字节码中发出类型注解详细信息,请参阅 Kotlin 1.3.70 版本博文相关部分。...请注意,一些库( kotlin-wrappers)在使用新 IR 编译器后端时会出问题,因为它们依赖于默认后端特定特性。我们已经意识到这一点,以后将改进此功能。...不过,如果您想通过泛型编写棘手代码,并具有不同级别的多个重载,请加以注意。所有这些情况都会列在上述兼容性指南中。 预发布说明 请注意,后向兼容性保证不涵盖预发布版本。

3.4K20

31 天,从浅到深轻松学习 Kotlin

Day 6:属性 在 Kotlin ,类可以具有可变和只读属性,默认情况下生成 getter 和 setter。如果需要,您也可以实现自定义。...第三周学习小结: 本周主要讨论一些基本 Kotlin 特性,运算符重载,内联,运算符重载,懒加载,以及非常强大 inLine,并展示了使用 Android KTX 处理内容值,捆绑包和回调时如何编写更简洁代码...Day 23:DSLs 特定于域语言可以通过使用类型安全构建器来完成。它们简化 API 做出贡献;您也可以自己借助扩展 lambdas 和类型安全构建器等功能构建它们。...Spek 是一个构建 Kotlin DSL 测试库。 Spek 不使用 @Annotations,而是提供了一种不依赖于反射类型安全方式来声明测试代码。...差异如下: run let with apply 第四周学习小结: 本周我们涵盖了更多语言特性, interop,refied 和 sequence,并且在 Android KTX,展示了它帮助您编写简洁易读代码一些方法

2.2K30

开源 | 从 SQLlin 更新看 Kotlin Multiplatform 技术更迭

但上述示例如果我们将对象 db(类型 Database)在多个线程(或运行在不同线程上协程)中共享,几乎必然会出现问题。...在 sqllin-dsl 新版本设计,新增了挂起函数 API suspendScope,用于在并发环境下取代 operator 函数 invoke,并且管理 SQL 语句构建双向链表被改成成员变量...在搭建、优化过程,我认为以下几点内容颇为重要: 5.1 单元测试/仪器测试原则 单元测试对任何项目都具有重要意义,可以在一定程度上验证代码修改不会导致原有预期行为改变,因此单元测试是 CI/CD...但我们必须确保 CI/CD 单元测试可以符合 5.1 小节原则。macOS 虽然可以编译构建 Linux 和 Windows 平台产物,但是无法执行这些平台单元测试。...六、社区推广 2022 年 SQLlin 刚开源之际,我在 2022 Kotlin 中文开发者大会上分享了 SQLlin 相关内容:以 SQLlin 例,分享如何构建自己 KMP 库经验。

17010

初探Kotlin+SpringBoot联合编程

Kotlin具有的很多静态语言特性诸如:类型判断、多范式、扩展函数、模式匹配等等让我无法只作为一个吃瓜群众了,所以稍微花了点时间了解了一下该语言。...--- 完善build.gradle配置 我们需要在build.gradle引入SpringBt依赖,除此之外还要引入一些特定插件方便我们向写Java代码一样来写Kotlin程序!...其中(以下解释源自《Kotlin极简教程》): org.jetbrains.kotlin:kotlin-noarg是无参(no-arg)编译器插件,它为具有特定注解类生成一个额外零参数构造函数。...我们使用Kotlin 调用JavaSpring AOP框架和库,需要类 open(可被继承实现),而Kotlin 类和函数都是默认 final ,这样我们需要为每个类和函数前面加上open修饰符。...例如,当我们使用 Spring 时,就不需要打开所有的类,跟我们在Java写代码一样,只需要用相应注解标注即可, @Configuration 或 @Service。

2.2K140

Spring认证中国教育管理中心-Spring Data R2DBC框架教程七

Kotlin 支持 Kotlin是一种面向 JVM(和其他平台)静态类型语言,它允许编写简洁优雅代码,同时提供与用 Java 编写现有库出色互操作性。...Spring Data Kotlin 提供一流支持,让开发人员几乎可以像编写 Kotlin 原生框架一样编写 Kotlin 应用程序。...这通过可空性声明和“值或无值”语义表达使应用程序更安全,而无需支付包装器成本,例如Optional. (Kotlin 允许使用具有可为空值函数式构造。请参阅Kotlin 空值安全性综合指南。)...Kotlin 对 JSR-305 注释和 Spring 可空性注释支持Kotlin 开发人员提供了整个 Spring Data API 空安全,具有null在编译时处理相关问题优势。...17.4.扩展 Kotlin扩展提供了使用附加功能扩展现有类能力。Spring Data Kotlin API 使用这些扩展现有的 Spring API 添加新 Kotlin 特定便利。

1.3K40

kotlin相比于java好处和坏处_kotlin和java

编写一次代码,几乎可以在任何计算平台上运行 它旨在构建面向对象应用程序。 它是一种允许自动内存管理多线程语言。 以网络中心促进分布式计算。...原始类型变量是对象 原始类型变量不是对象 在 Kotlin ,我们可以有一个或多个二级构造函数。 在 Java ,我们不能有二级构造函数。但是,它可以有多个构造函数。...Kotlin 没有任何通配符类型。 wide-card在 Java 可用。 Kotlin 系统类型具有内置空安全性。...此功能在 Java 不可用。 语言脚本功能允许您直接在 Gradle 构建脚本中使用 Kotlin Java 不提供语言脚本功能。 它支持现代编程概念,委托、扩展、高阶函数。...它比 Java 更简洁、更具表现力,这意味着出错空间更小。 提供用户友好且易于理解编码规范 将大型应用程序划分为更小层。 使用大量函数类型和专门语言结构, lambda 表达式。

5.5K10

Ktorm - 让你数据库操作更具 Kotlin 风味

列使用 val 和 by 关键字定义表对象成员属性,列类型通过 int、 long、 varchar、 date 等函数定义,它们分别对应了 SQL 相应类型。...使用 DSL 编写 SQL DSL(Domain Specific Language,领域特定语言)是专为解决某一特定问题而设计语言。...Kotlin 我们提供了构建内部 DSL 强大能力,所谓内部 DSL,即使用 Kotlin 语言开发,解决特定领域问题,具备独特代码结构 API。...在代码拼接 SQL 字符串一直是各位程序员心中痛,Ktorm 提供了强类型 DSL,让我们可以使用更安全和简便方式编写 SQL。...我们学习了如何使用扩展函数 Ktorm 增加更多数据类型支持、如何使用强类型 DSL 编写 SQL、如何使用运算符重载和 infix 关键字 Ktorm 扩展更多运算符、以及如何使用实体序列

1.6K20

Kotlin 1.2 新特性

现在,使用Kotlin编写代码,可以在所有的应用程序(包括后端,浏览器前端和Android移动应用程序)重复使用。 ?...比如说,如果你在调用一个返回“T”泛型方法时,并将它返回值“T”转换为特定类型“Foo”,编译器就会推断出这个方法调用“T”其实是“Foo”类型。...弃用:枚举条目中嵌套类型 在枚举条目中,inner class由于初始化逻辑问题,定义一个非嵌套类型已经被弃用了。这会在Kotlin 1.2引起警告,并将在Kotlin 1.3出错。...弃用:扩展Throwable泛型内部类 继承泛型类型内部类Throwable可能会违反类型安全性,因此已被弃用,Kotlin 1.2有警告,Kotlin 1.3有错误。...内联扩展空修复 在以前版本,在平台类型空值上调用内联扩展函数没有检查接收器是否null,并因此允许null转义到其他代码

1.7K100
领券