小编Shr*_* Ye的帖子

在 Kotlin 中获取一个元素,其索引从末尾开始计数

Array是否有一个简单的函数可以获取 Kotlin 、List、 或中从末尾开始计数的元素String?换句话说,Kotlin 中是否存在与 Python 中的负索引切片等效的功能?

arrays list slice kotlin

9
推荐指数
1
解决办法
8701
查看次数

如何为文件添加顶级 KDoc?

有没有办法为 Kotlin 文件添加一段顶级 KDoc?

由于 Kotlin 在单个文件中支持多个变量、函数、类等,因此将文件作为一个整体来记录是有意义的。但是,记录 Kotlin 代码 - Kotlin 编程语言似乎没有任何说明。

kotlin kdoc

8
推荐指数
1
解决办法
145
查看次数

如何使用 kotlinx.serialization 将库类序列化为 Protobuf?

如何使用kotlinx.serialization将库类序列化为 Protobuf ?由于它不可编辑,因此我无法@SerialId按照runtime_usage.md#protobuf 中的说明为其属性添加注释。如果我像custom_serializers.md那样编写自己的外部序列化程序,它不会告诉我如何SerialId为 Protobuf 序列化指定s。

例如,我试图序列化 a java.math.BigDecimal,将其存储为unscaledValueasbytesscaleas sint32。使用原始的 Protobuf Java 库很容易做到,但我想知道如何使用kotlinx.serialization做到这一点

protocol-buffers kotlin kotlinx.serialization

8
推荐指数
1
解决办法
1118
查看次数

KTX吐司扩展功能在哪里?

我从这篇文章中了解到使用 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. 那么这个扩展函数在哪个依赖中呢?

android android-ktx

7
推荐指数
2
解决办法
2464
查看次数

Google Colab 中的编号标题和目录

有没有办法在 Google Colab 中启用编号的标题和目录?

类似问题:markdown - jupyter notebooks 中的编号标题 - Jupyter Notebook 的堆栈溢出(需要 nbextension)。

需要 Google Colab 的解决方案。

markdown tableofcontents heading jupyter-notebook google-colaboratory

7
推荐指数
1
解决办法
5499
查看次数

具有const参数的不可变对象将被优化为仅由Kotlin编译器实例化一次

Java中有许多不可变的类,例如String原始包装器类,而Kotlin引入了许多其他Range不可变的Collection类,例如子类和不可变子类。

对于Ranges,从Control Flow:是否,何时,何时,何时-Kotlin编程语言,我们已经知道:

for在一定范围或数组环被编译为一个基于索引的循环,不创建一个迭代器对象。

但是,在处理Ranges的其他情况下,这种优化是不可能的。

当使用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)

第二个会带来任何性能改进吗?

java constants immutability kotlin kotlinc

5
推荐指数
1
解决办法
42
查看次数

如何在 Kotlin 中检查序列是否为空

如何在 Kotlin 中检查序列是否为空?最简单的方法是什么?

sequence kotlin

4
推荐指数
1
解决办法
959
查看次数

Kotlin序列至阵列

如何在Kotlin中有效地将转换SequenceArray(或原始数组,如IntArray)?

我发现没有toArray()用于Sequences的方法。和toList().toArray()toList().toIntArray())创建一个额外的临时列表。

arrays escaping stream kotlin java-stream

3
推荐指数
1
解决办法
621
查看次数

是否有一个函数可以分别采用两个转换函数来转换/映射Either 的Left 和Right 情况?

我还没有在 Scala 或 Haskell 中找到一个函数可以同时转换/映射Either'sLeftRightcase 两个转换函数,即类型为

(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)

monads haskell scala either

2
推荐指数
2
解决办法
381
查看次数

在Kotlin中将属性重写为常量的最佳方法

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中是否有更好的方法或模式来声明将被覆盖为常量的属性?

overriding properties constants kotlin

1
推荐指数
1
解决办法
366
查看次数

在 Gradle 中使用来自 Kotlin/Native 的 Apple 依赖项,更具体地说是 SwiftUI

如何在 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包下。iosMainkotlinshared

但是,SwiftUI 不存在。更具体地说,就我而言,我尝试使用 SwiftUI 在 Kotlin 中直接构建 UI。目前是否有可能,然后如何使 SwiftUI“系统框架”也包括在内?

这是我build.gradle.ktsshared模块中的参考:

import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget

plugins {
    kotlin("multiplatform") version "1.4.30"
}

group …
Run Code Online (Sandbox Code Playgroud)

gradle kotlin kotlin-native kotlin-multiplatform swiftui

0
推荐指数
1
解决办法
103
查看次数