Array
是否有一个简单的函数可以获取 Kotlin 、List
、 或中从末尾开始计数的元素String
?换句话说,Kotlin 中是否存在与 Python 中的负索引切片等效的功能?
有没有办法为 Kotlin 文件添加一段顶级 KDoc?
由于 Kotlin 在单个文件中支持多个变量、函数、类等,因此将文件作为一个整体来记录是有意义的。但是,记录 Kotlin 代码 - Kotlin 编程语言似乎没有任何说明。
如何使用kotlinx.serialization将库类序列化为 Protobuf ?由于它不可编辑,因此我无法@SerialId
按照runtime_usage.md#protobuf 中的说明为其属性添加注释。如果我像custom_serializers.md那样编写自己的外部序列化程序,它不会告诉我如何SerialId
为 Protobuf 序列化指定s。
例如,我试图序列化 a java.math.BigDecimal
,将其存储为unscaledValue
asbytes
和scale
as sint32
。使用原始的 Protobuf Java 库很容易做到,但我想知道如何使用kotlinx.serialization做到这一点。
我从这篇文章中了解到使用 Android KTX 进行更甜蜜的 Android 开发(https://www.kotlindevelopment.com/even-sweeter-android-ktx-kotlin/)可以使用 KTX 简化 Android Toast
Toast.makeText(context, R.string.toast_message, Toast.LENGTH_SHORT).show()
Run Code Online (Sandbox Code Playgroud)
到
toast(R.string.toast_message)
Run Code Online (Sandbox Code Playgroud)
我想在我的项目中尝试它,但在androidx.core:core-ktx:1.0.0
. 那么这个扩展函数在哪个依赖中呢?
有没有办法在 Google Colab 中启用编号的标题和目录?
类似问题:markdown - jupyter notebooks 中的编号标题 - Jupyter Notebook 的堆栈溢出(需要 nbextension)。
需要 Google Colab 的解决方案。
markdown tableofcontents heading jupyter-notebook google-colaboratory
Java中有许多不可变的类,例如String
原始包装器类,而Kotlin引入了许多其他Range
不可变的Collection
类,例如子类和不可变子类。
对于Range
s,从Control Flow:是否,何时,何时,何时-Kotlin编程语言,我们已经知道:
甲
for
在一定范围或数组环被编译为一个基于索引的循环,不创建一个迭代器对象。
但是,在处理Range
s的其他情况下,这种优化是不可能的。
当使用const参数或更一般地使用const参数递归创建此类不可变类时,仅实例化一次该类将带来性能提升。(换句话说,如果我们将其称为const不可变实例化,则且仅当其所有参数均为常量或const不变实例化时,实例化才是const不可变实例化。)由于Java编译器没有一种机制来知道是否一个类是不可变的,Kotlin编译器是否基于对已知不可变类的了解而将此类仅进行一次实例化?
有关应用程序的更具体示例,请考虑以下代码:
repeat(1024) {
doSomething(('a'..'z').random())
}
Run Code Online (Sandbox Code Playgroud)
val LOWERCASE_ALPHABETS = 'a'..'z'
repeat(1024) {
doSomething(LOWERCASE_ALPHABETS.random())
}
Run Code Online (Sandbox Code Playgroud)
第二个会带来任何性能改进吗?
如何在Kotlin中有效地将转换Sequence
为Array
(或原始数组,如IntArray
)?
我发现没有toArray()
用于Sequence
s的方法。和toList().toArray()
(toList().toIntArray()
)创建一个额外的临时列表。
我还没有在 Scala 或 Haskell 中找到一个函数可以同时转换/映射Either
'sLeft
和Right
case 两个转换函数,即类型为
(A => C, B => D) => Either[C, D]
Run Code Online (Sandbox Code Playgroud)
forEither[A, B]
在 Scala 中,或类型
(a -> c, b -> d) -> Either a b -> Either c d
Run Code Online (Sandbox Code Playgroud)
在哈斯克尔。在 Scala 中,它相当于这样调用fold
:
(A => C, B => D) => Either[C, D]
Run Code Online (Sandbox Code Playgroud)
或者在 Haskell 中,它相当于这样调用either
:
mapLeftOrRight :: (a -> c) -> (b -> d) -> Either a b -> Either c d
mapLeftOrRight fa fb …
Run Code Online (Sandbox Code Playgroud) Kotlin为属性覆盖提供支持。我想知道什么是重写属性为常数值的最佳方法。
更具体地说,假设val
在超类或接口中声明了抽象属性:
// In a superclass or an interface
abstract val num : Int
Run Code Online (Sandbox Code Playgroud)
据我所知,在其子类中至少有两种方法可以覆盖它:
// In its subclass
override val num : Int = 0
Run Code Online (Sandbox Code Playgroud)
要么
// In its subclass
override val num : Int get() = 0
Run Code Online (Sandbox Code Playgroud)
除了这两个之外,我还可以用Java方式做到这一点:
// In a superclass or an interface
abstract fun getNum() : Int
// In its subclass
override fun getNum() : Int = 0
Run Code Online (Sandbox Code Playgroud)
就内存和生成的字节码而言,这三个之间有何区别?哪一个是最好的?
在Kotlin中是否有更好的方法或模式来声明将被覆盖为常量的属性?
如何在 Kotlin/Native 或 Kotlin Multiplatform 项目中使用 Gradle 将 Apple 依赖项添加到 Kotlin/Native 模块?
我不熟悉 Apple 和 Xcode 开发——我写了一点 Swift,但没有为 Xcode 项目配置额外的依赖项,所以如果我在这里有新手误解,请见谅。
Kotlin/Native 可与 Objective-C 和 Swift 互操作。在我在线浏览的许多示例项目中,Kotlin 被设置为用作 Apple (iOS) 模块的共享库。但是 Apple 依赖项中的定义可以从 Kotlin 代码中调用也应该是有意义的,就像 Java Maven 依赖项可以添加到 Gradle 构建脚本然后由 Kotlin 代码调用一样。
在名称翻译部分,它说:
platform.*
预配置系统框架的包
在使用 IntelliJ IDEA 中的 Kotlin 多平台移动应用程序选项创建的项目中,此类定义包含在模块中模块文件夹中的platform
包下。iosMain
kotlin
shared
但是,SwiftUI 不存在。更具体地说,就我而言,我尝试使用 SwiftUI 在 Kotlin 中直接构建 UI。目前是否有可能,然后如何使 SwiftUI“系统框架”也包括在内?
这是我build.gradle.kts
在shared
模块中的参考:
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
plugins {
kotlin("multiplatform") version "1.4.30"
}
group …
Run Code Online (Sandbox Code Playgroud) kotlin ×8
arrays ×2
constants ×2
android ×1
android-ktx ×1
either ×1
escaping ×1
gradle ×1
haskell ×1
heading ×1
immutability ×1
java ×1
java-stream ×1
kdoc ×1
kotlinc ×1
list ×1
markdown ×1
monads ×1
overriding ×1
properties ×1
scala ×1
sequence ×1
slice ×1
stream ×1
swiftui ×1