Kotlin为不同的增量

Kotlin有跟随 for (i in 0..10) {} 它类似于Java for (int i = 0; i < 10; i++) {} 但如何改变kotlin的增量,以获得类似于java的东西: for (int i = 0; i < 10; i = i + 2) {}

了解kotlin执行者

我理解执行者的概念,但是我在理解kotlin的执行者方面有些麻烦。 也许这是语法没有帮助。 让我们看看下面的例子: private class AlwaysCallback(private val executor: (() -> Unit) -> Unit, private val cb: Progress.() -> Unit) : Callback { override fun execute(progress: Progress) { executor { progress.cb() } } } 如果我理解正确,执行者( () -> Unit ) -> Unit是一个关闭的容器。 要执行的代码块。 我不确定这是真的,还是只是一个匿名功能的船只。 另一件事是,有人可以解释语法: ( () -> Unit ) -> Unit ? 我已经阅读了kotlin文档,阅读kotlin源代码,并试图谷歌,但我真的很难理解这一点。 谢谢

Kotlin:更新不可变列表元素

Kotlin初学者在这里。 我如何获取一个列表,而不用改变它,创建一个更新元素在特定索引的第二个(不可变)列表? 我想到了两种方式,这两种方式似乎都可能导致性能命中,改变底层对象,或两者兼而有之。 data class Player(val name: String, val score: Int = 0) val players: List<Player> = … // Do I do this? val updatedPlayers1 = players.mapIndexed { i, player -> if (i == 2) player.copy(score = 100) else player } // Or this? val updatedPlayer = players[2].copy(score = 100) val mutable = players.toMutableList() mutable.set(2, […]

Kotlin通用属性

在没有声明类级别泛型类型的情况下 ,kotlin有没有办法创建泛型属性? 看起来像这样的东西: interface Generic { val t: T //I need this type only once, thats why I dont wanna pass in the class level fun <E> gMethod(e: E) { //This works, so I'm wondering if there's something similiar to properties } }

Android Studio 3 canary&Kotlin

有没有人得到消息“Kotlin未配置” 我确定我错过了一些东西,但是大部分我下载了它,并且只是导入了我现有的2.x设置。 我尝试从java类复制/粘贴到一个新的Kotlin文件,这就是我在哪里。 这是我目前的顶级build.gradle buildscript { repositories { jcenter { url = "http://jcenter.bintray.com/" } maven { url = "https://maven.google.com" } mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-alpha1' } } allprojects { repositories { jcenter { url = "http://jcenter.bintray.com/" } maven { url = "https://maven.google.com" } mavenCentral() } } 然后在我的模块构建文件的顶部我有这两行 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' 目前的错误是“插件与id'kotlin-android'未找到”

在Kotlin中使用Javascript库

我最后一次使用Kotlin的时候是2015年12月,当时我用它来解决一些欧拉项目问题。 这一次我想尝试与Javascript的互操作性。 现在我的问题是,我们如何在Kotlin中导入/使用现有的Javascript库? 我见过一些使用native关键字的人,我只是想简单地解释一下。

Kotlin中的保留关键字是什么?

我走过https://kotlinlang.org/docs/reference,但我找不到保留关键字,在Kotlin中使用。 Kotlin有多少个关键字? 只要我们知道Java有像这样的自己的关键字列表:

将GsonBuilder转换成Kotlin

有谁知道如何将此代码转换为kotlin GsonBuilder builder = new GsonBuilder(); builder.setLenient(); builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() { @Override public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { if (json.getAsJsonPrimitive().isNumber()) { return new Date(json.getAsJsonPrimitive().getAsLong() * 1000); } else { return null; } } }); return builder.create(); 然后,我试了一下 val builder = GsonBuilder() builder.setLenient() builder.registerTypeAdapter(Date::class.java,………) return builder.create() …..我不知道如何转换代码

统一(C#) – > Kotlin < – 协程

我正在试验Kotlin第一次,会喜欢一些帮助。 下面的代码是什么暂停执行当前函数而不休眠正在执行的线程。 暂停是基于提供的时间量。 该函数通过使用C#语言的协程支持来工作。 (这种支持最近也被添加到Kotlin!) 统一的例子 void Start() { print("Starting " + Time.time); StartCoroutine(WaitAndPrint(2.0F)); print("Before WaitAndPrint Finishes " + Time.time); } IEnumerator WaitAndPrint(float waitTime) { yield return new WaitForSeconds(waitTime); print("WaitAndPrint " + Time.time); } 我一直无法弄清楚如何在Kotlin做类似的事情。 有人能帮助我指引正确的方向吗? 如果我在发布答案之前弄明白,我会更新我的帖子。 提前致谢!

在Kotlin中,处理可空值的惯用方式是什么,引用或转换它们

如果我有一个可空类型Xyz? ,我想引用它或将其转换为不可为空的类型Xyz 。 Kotlin这样做的习惯用法是什么? 例如,这个代码是错误的: val something: Xyz? = createPossiblyNullXyz() something.foo() // Error: "Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Xyz?" 但是,如果我先检查null是允许的,为什么呢? val something: Xyz? = createPossiblyNullXyz() if (something != null) { something.foo() } 假如我知道它确实从不为null ,我该如何将值更改或视为非null而不要求if检查? 例如,在这里我从地图中检索一个值,我可以保证存在,并且get()的结果不为null 。 但是我有一个错误: val map = mapOf("a" to 65,"b" to […]