Tag: kotlin

统一(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 […]

Kotlin无效检查错误

我使用Java库。 在异常类中有“localizedMessage”字段和“描述”字段。 我不知道为什么,但是“描述”(即java String)被识别为String! 通过Kotlin,当“description”为null时,条件描述== null返回false。 代码示例: mvpView?.showToast(it.description?:it.localizedMessage) 或没有猫王: if (it.description.isNullOrBlank()) { mvpView?.showToast(it.localizedMessage) } else { mvpView?.showToast(it.description) } 它总是试图显示“描述”,但在调试模式下的“评估表达式”在描述== null(按预期)返回true。 Kotlin版本是1.1.1

Kotlin检查了例外情况

由于Kotlin不支持检查异常,所以如何让程序员意识到一个方法可能会抛出异常 简单的例子: class Calculator (value: Int = 0) { fun divide (dividend: BigDecimal, divider: BigDecimal) : BigDecimal { return dividend / divider } } 显然,除法方法可能会抛出java.lang.ArithmeticException: Division by zero异常,并且库的创建者需要警告类的用户将调用置于try-catch子句中 Kotlin的这种意识的机制是什么?

限制在Kotlin中的功能

Java 8中有一个流方法的limit : package com.concretepage.util.stream; import java.util.Arrays; import java.util.List; public class LimitDemo { public static void main(String[] args) { List<String> list = Arrays.asList("AA","BB","CC","DD","EE"); list.stream().limit(3).forEach(s->System.out.println(s)); } } 输出: AA BB CC Kotlin中的模拟名称是什么,或者如何以另一种方式做得更好?

java.util.HashMap是否没有在Kotlin中实现java.util.Map?

我无法理解为什么Java HashMap与Kotlin中的Java Map不兼容: val map : java.util.Map<Int, Int> = java.util.HashMap<Int, Int>() // ERROR: Type mismatch 这是一个错误还是故意强制执行是Kotlin错误? 这是Java to Kotlin编译器的第二个例子。 看看这个Java示例文件: public class Test { public static void main(String[] args) { java.util.Map<Integer, Integer> map = new java.util.HashMap<>(); insertValue(map); } private static void insertValue(java.util.Map<Integer, Integer> map) { map.putIfAbsent(0, 1); } } 运行“转换Java到Kotlin”结果在这个文件中: object Test { @JvmStatic fun […]

如何在Android中添加对普通Java Lib的Kotlin支持?

当我们想在Android Studio中使用Kotlin时,它非常简单。 添加kotlin依赖库,并添加如下Kotlin-Android插件 apply plugin: 'com.android.library' apply plugin: 'kotlin-android' 但是,如果我有一个正常的库(以前是Java),并且想要在Kotlin中编写,我应该添加任何插件吗? 以下绝对不能工作。 apply plugin: 'java-library' apply plugin: 'kotlin-android' 没有“kotlin库”,我发现添加。我应该添加到我的模块gradle让它能够编译Kotlin?

Kotlin JS项目的基本Gradle脚本Kotlin文件是什么样的?

我正在尝试使用Kotlin-DSL在Kotlin中编写一个Gradle构建脚本。 到目前为止,我已经看到了关于如何为Java项目完成的例子。 然而,因为我正在Kotlin开发一个React Native应用程序,所以没有任何教程可以用来制作Kotlin / JavaScript项目。 那么为了这个目的,一个基本的 Gradle脚本Kotlin文件是什么样的?

在ViewHolder中使用kotlin-android-extensions

class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bindata(text: SingleText){ itemView.title.text = text.title itemView.desc.text = text.desc } } 像这样的代码,Kotlin在android扩展中有任何缓存? 当我反编译Kotlin字节码 public final void bindata(@NotNull SingleText text) { Intrinsics.checkParameterIsNotNull(text, "text"); ((AppCompatTextView)this.itemView.findViewById(id.title)).setText((CharSequence)text.getTitle()); ((AppCompatTextView)this.itemView.findViewById(id.desc)).setText((CharSequence)text.getDesc()); } 这意味着当我在Adapter.onBindViewHolder()中调用binData时,它会每次调用findViewById 这大大增加了性能的损失,并没有达到布局重用的目的 Kotlin在ViewHolder的android扩展中有任何缓存逻辑?

有没有办法从一个普通的Kotlin类中识别一个Kotlin数据类?

有没有办法从一个普通的Kotlin类中识别一个Kotlin数据类? 像使用反射也许?