首页
学习
活动
专区
圈层
工具
发布

前端开发者的 Kotlin 之旅:元编程初探

今天,让我们从前端开发者的视角,深入了解 Kotlin 中的元编程概念,看看它如何帮助我们写出更优雅、更强大的代码。什么是元编程?...:程序层面:你写的 React 组件、业务逻辑元程序层面:Webpack 配置、Babel 插件、TypeScript 编译器前端开发元编程经验回顾在深入 Kotlin 元编程之前,让我们回顾一下前端生态中的...= null private var name: String? = null private var price: Double?...= null private var category: String?...、适配器Kotlin DSLstyled-components类型安全的领域语言配置、构建工具总结作为前端开发者,学习 Kotlin 元编程不仅能帮你更好地理解编程语言的底层机制,还能为你的技术栈带来新的可能性

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

    【Kotlin】空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )

    在 代码编写时 以及 编译期 很难提前排查出来 ; Kotlin 的空安全机制 : 在 Kotlin 语言 中 , 针对 空指针异常 问题 进行了优化 , 引入了 空安全机制 , 在代码编写后的 编译期..., 就可以 提前排查出可能出现的空指针异常问题 , 并提前进行处理 , 这样极大地提高了 Kotlin 程序的 代码健壮性 ; 二、变量可空性 ---- 1、默认变量不可赋空值 在 Java 中 ,...引用类型的变量 默认为 null 空值 ; 但是在 Kotlin 中 , 变量默认不可为 null 空值 , 这样所有的 变量 在默认状态下 , 都有一个 默认的实例对象 , 从而极大的 减少了 空指针异常...name = null } 此时 , 在 IntelliJ IDEA 中 就会提示如下报错信息 : Null can not be a value of a non-null type String...---- Kotlin 中的 可空类型 变量 , 在运行时 可以选择 不启用 安全调用 操作 , 在调用 可空类型 变量 成员 与 方法 时 , 使用 非空断言操作符 !!

    2.6K10

    一次 Spring 无法启动的问题排查(字节码篇)

    问题背景 有同学反馈,有一个项目从 kotlin 1.2 升级到 kotlin 1.3 以后 Spring 项目无法启动,报 java.lang.IllegalStateException: Ambiguous...Cannot map 'xxx' method 错误 没有引入任何其它变量,只更改了 kotlin 的版本,猜测可能是编译出来的字节码不一样,出问题的函数如下。...在 kotlin1.2 中,因为编译出的 getActivityGameByPage$default() 包含了 bridge,在 Spring 扫描的过程中就会被忽略掉,而 kotlin1.3 中,因为方法签名不包含...是的,kotlin 不解决,那就只能上层框架兼容了,Spring 在后续的版本中做了修复,增加了对 ACC_SYNTHETIC 的判断,修改的地方如下: 这样,在新版本的 Spring 中,就不存在这个问题了...在 4 年前的一个 commit 中,有一个伙计干掉了 ACC_BRIDGE 标记。

    51710

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

    在 Kotlin 中,不可能为空的变量和可能为空的变量被强行分开了(Java 有 @Nullable 和 @NonNull 注释,但只会提供警告)。那 Kotlin 为什么要这样设计呢?...Kotlin 非空类型/可空类型(NonNull/Nullable)声明 最开始时我们提到:在 Kotlin 中,不可能为空的变量和可能为空的变量被强行分开了。具体是怎么分开的呢?...前者的行为是,如果非空则调用,否则不调用;后者行为是,如果非空则调用,否则抛出 Illegalstateexception。...getMyCode() // ok } 生产环境不建议使用双叹号!!,一般只用于测试环境。使用双叹号可以理解为放弃 Kotlin 的空安全特性。 3....回到场景 如果用 Kotlin 来实现场景中的代码,只需要将 mAudioPlayer 声明为可空类型就可以了: PlayerController.kt: /** * 用户音频 ugc 播放器。

    1.3K50

    你造吗,null 也能 toString()!

    null 也能 toString() 话说我有一段代码,经过运算会得到一个变量,它可能为 null: fun resolveCurrentMatchPoint(): MatchPoint?...我把上面的代码改成了下面这样,想想也算是大无畏的革命精神嘛,我不 crash 谁 crash: Log.d(TAG, matchPoint.toString()) 我:大不了就 crash,谁怕谁 Kotlin...如果遇到 receiver 为 null,那么就直接返回 null,可以可以,这很 Kotlin。...经常遇到为 null 的数值,判空判到心碎 之前在 Kotlin 论坛上面看到一个帖子,说一哥们经常遇到数值为 null 的情况,期待能有什么特性帮到他。...: throw IllegalStateException() 如果你想很好的适应 Kotlin 的可空类型,你必须慢慢养成“多用不可空类型,多用只读变量”的习惯,Kotlin 提供了很好的语法特性让我们去适应这样的要求

    3.8K10

    【Kotlin】空安全 ⑥ ( 先决条件函数 | checkNotNull 函数 | require 函数 | requireNotNull 函数 | error 函数 | assert 函数 )

    文章目录 一、先决条件函数 1、先决条件函数概念 2、先决条件函数原型 3、先决条件函数代码示例 一、先决条件函数 ---- 1、先决条件函数概念 在 Kotlin 中提供了一些 内置函数 , 在这些函数中可以抛出...= null) } return requireNotNull(value) { "Required value was null." } } error 函数 : 参数为 null...抛出 AssertionError 异常 , 并进行 断言标记 ; /** * 如果[value]为false,则抛出[AssertionError] * 和运行时断言已经使用*-ea* JVM选项在JVM...failed" } } 3、先决条件函数代码示例 代码示例 : 在执行 name 字符串的 count 函数之前 , 先使用 checkNotNull(name, {"变量为空"}) 先决条件函数 ,...= null) } if (value == null) { val message = lazyMessage() throw IllegalStateException

    2.5K10

    Kotlin for Java Developers 学习笔记

    = null // 或者 = "a string" 对于一个可能为 null 的变量,我们应该始终用 if 语句检查 if (s !...= null) { s.length } 在 Kotlin 中。可以使用 ?...表示表达式可以为 null 成员引用 可以往变量中存储 Lambda 表达式,但是不可以存储一个函数,在 Kotlin 中,函数和 Lambda 是两回事,如果一定要把函数保存到变量中,可以使用函数引用...internal override 在 Kotlin 中是强制的,避免意外 override protected 在 Java 中仍然对同一个包内的其他类可见,在 Kotlin 中只对子类可见 private...Exception,而不需要明确地检查是不是为 null 这种情况可以在 Java 代码中增加注解 @Nullable、@NonNull 等,这样 Kotlin 就可以强制检查 Nullable 的数据

    2.3K10

    Kotlin Maps:五个基本函数

    在这篇文章中,我谈论的是maps的基础知识。我将向您展示处理maps时最常用的函数。 Kotlin 中maps的用途 在使用maps之前了解什么是maps。本质上,映射是键值对的集合。关键是标识符。...Get 该**?GET**方法查找对应于给定键的映射中的值。 它接收一个参数,这是您要查找的键。它返回与该键关联的值。如果映射中不存在键,则返回null。Kotlin 鼓励?空安全。...如果它已存在于maps中,则键保持不变,新值替换旧值。 对于插入,该方法返回 null。对于替换,它返回旧值。...它返回值,如果键在maps中不存在,则该值为 null。...Iterator是另一个在 Kotlin 中具有替代语法的运算符,它使代码更加简洁明了: for ((key, value) in numbers) { println("$key -> $value

    2.9K10

    Spring Data JPA 参考文档二

    它们null在运行时提供了一种工具友好的方法和选择加入检查,如下所示: @NonNullApi: 在包级别上用于声明参数和返回值的默认行为分别是既不接受也不产生null值。...IllegalArgumentException当emailAddress传递给方法是时抛出null。 基于 Kotlin 的存储库中的可空性 Kotlin在语言中定义了可空性约束。...} 该方法将参数和结果都定义为不可为空(Kotlin 默认值)。Kotlin 编译器拒绝传递null给方法的方法调用。...该方法接受null的firstname参数,并返回null,如果查询不产生结果。 4.4.8.流式查询结果 您可以使用 Java 8Stream作为返回类型以增量方式处理查询方法的结果。...如果两个片段贡献相同的方法签名,则此排序允许您覆盖基本存储库和方面方法并解决歧义。存储库片段不限于在单个存储库界面中使用。多个存储库可以使用片段接口,让您可以在不同的存储库中重用自定义。

    1.5K30
    领券