赞
踩
官方编程指导文档:接口 · Kotlin 官方文档 中文版 | |
by 关键字用法 |
by关键字用于实现委托模式。委托模式允许一个对象将某些操作委托给另一个对象来处理,从而减少代码重复和提高代码的可维护性。如类委托(绑定接口到另一个对象),属性委托(绑定属性到另一个类属性) |
associateWith/associateBy/associate | 将集合的值作为Map的键或值,并返回Map |
groovy转kts | allowInsecureProtocol 改为isAllowInsecureProtocol=true https://developer.android.com/build/dependencies?hl=zh-cn#kts |
Android构建资料 | https://developer.android.com/studio/build?hl=zh-cn Gradle Kotlin DSL Primerhttps://docs.gradle.org/current/userguide/core_dependency_management.htmlGradle Kotlin DSL Primer |
maven发布 | https://github.com/gradle/kotlin-dsl-samples/blob/master/samples/maven-publish/build.gradle.kts |
Kotlin注解 | 以下是 Kotlin 中的一些常见注解及其说明: @JvmStatic: 将伴生对象(Companion Object)中的函数或属性编译为与 Java 兼容的静态函数或属性。 @JvmOverloads: 生成多个重载方法或构造函数,以便在与 Java 代码进行交互时可以省略部分参数。 @JvmField: 将属性生成为公共的 Java 字段,而不生成对应的 getter 和 setter 方法。 @Volatile: 标记属性为volatile,以确保多线程访问时的可见性。 @Synchronized: 修饰方法,将方法的执行体放在同步块中,确保方法的原子性。 @Throws: 标记方法可能会抛出指定的异常,以便为 Java 调用者提供异常信息。 @Deprecated: 标记函数、属性或类为过时的,在调用时会发出警告或错误。 @Suppress: 禁用指定类型的警告,可以级联多个警告类型。 @JvmName: 指定生成的 Java 方法或属性的名称。 @JvmMultifileClass: 将多个 Kotlin 文件编译成一个 Java 类。 @JvmSynthetic: 标记生成的方法或属性为一个合成方法,不会公开给 Java 代码。 @Target: 指定注解的使用范围,如方法、类、属性等。 这些只是 Kotlin 注解的一小部分,还有其他一些用于特定用途的注解。每个注解都有其特定的用途和行为,可以根据实际需求选择适合的注解来使用。在编写 Kotlin 代码时,将这些注解与代码的需求相匹配可以提供更好的互操作性和代码质量。 |
inner关键字用法 | 使用 如果不使用 |
launch(Dispatchers.Default) 和 GlobalScope.launch 和 withContext(Dispatchers.IO) | GlobalScope.launch适合于全局性的任务,launch(Dispatchers.Default)适合于受外部作用域控制的任务,而withContext(Dispatchers.IO)不启动协程,适合于在不同调度器上执行特定类型的任务。在实际使用中,应根据具体的需求选择合适的方式来启动协程 |
by lazy |
懒加载 |
lateinit | 延迟加载 |
::myVariable.isInitialized | ::myVariable.isInitialized 的工作原理是获取变量 myVariable 的引用,然后访问它的 isInitialized 属性。:: 运算符返回的是一个引用,而不是变量本身,因此不会触发对变量的访问,也就不会抛出异常。- 判断延迟加载是否初始化 |
suspend关键词 | * `suspend` 关键字用于声明一个挂起函数。挂起函数可以在协程中使用,它允许协程在等待异步操作完成时暂停执行。 * 挂起函数必须在协程作用域内调用。协程作用域可以使用 `runBlocking`、`launch` 或 `async` 函数创建。 * 挂起函数可以使用 `await` 关键字来等待异步操作完成。`await` 关键字会暂停协程的执行,直到异步操作完成。 * 挂起函数还可以使用 `yield` 关键字来暂停协程的执行。`yield` 关键字会暂停协程的执行,并返回一个值。当协程再次恢复执行时,它将从 `yield` 关键字处继续执行。 |
协程 | 创建协程不会创建线程。协程是在现有的线程上运行的。这意味着协程可以比线程更有效地利用系统资源。 以下是一些协程和线程的具体区别: 特性 协程 线程 |
viewModelScope、liveCycleScope與livedata builder | https://medium.com/@alice.margatroid.love/%E7%AD%86%E8%A8%98-coroutine%E7%B0%A1%E4%BB%8B-%E4%B8%89-viewmodelscope-livecyclescope%E8%88%87livedata-builder-e8be67aade8 |
private fun continueDetect(resultCallback:(Pair<Int, Float>>) 匿名函数作为参数和调用 |
private val resultCallback = { result: List<Pair<Int, Float>> -> val sceneType = if (result.isNotEmpty() && result.first().second > 0.5) SceneType.Concert else SceneType.UNKNOWN result.forEach { showTip("sceneType is : ${sceneType.name} id:${it.first} score:${it.second}") return@forEach // Use return@forEach to break the loop } } |
LaunchedEffect 在Compose中启动协程 | 它允许你在 Composable 函数中启动一个协程,并确保协程在 Composable 重组时能够正确地处理。 |
kotlin图数据结构 | Kotlin 标准库中没有提供 graph 图形结构,但有许多第三方库可以用来表示和操作图。其中一些最受欢迎的库包括: jgrapht:jgrapht 是一个功能齐全的图库,它提供了各种算法和数据结构来表示和操作图。它支持有向图和无向图,并提供了许多有用的功能,如深度优先搜索、广度优先搜索、最短路径计算等。 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。