Tag: kotlin extension

我们是否应避免在Kotlin中命名与现有类相同的函数? 为什么?

Kotlin允许命名与现有类相同的函数,例如HashSet具有初始化函数可以像这样实现: fun HashSet(n : Int, fn: (Int) -> T) = HashSet(n).apply { repeat(n) { add(fn(it)) } } 使用时,它看起来像一个正常的HashSet构造函数: var real = HashSet() var fake = HashSet(5) { “Element $it” } 这应该避免或鼓励,为什么?

Kotlin内联扩展属性

我知道内联关键字的意思是避免调用开销调用一个函数。 但我不明白什么内联扩展属性工作? 假设我们有两个名为foo的扩展属性,另一个是内联的命名条 val Any.foo : Long get() = Date().time inline val Any.bar : Long get() = Date().time 执行它们中的任何一个,我们find期望的输出,即当前时间。 这个文件的字节码如下: public final class InlinedExtensionPropertyKt { public final static getFoo(Ljava/lang/Object;)J @Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0 L0 ALOAD 0 LDC “$receiver” INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkParameterIsNotNull (Ljava/lang/Object;Ljava/lang/String;)V L1 LINENUMBER 9 L1 NEW java/util/Date DUP INVOKESPECIAL java/util/Date. ()V INVOKEVIRTUAL java/util/Date.getTime ()J […]

Kotlins扩展方法Stream.toList()丢失

我试图将一个流转换为kotlin中正确的types列表。 对于这种情况,kotlin提供了扩展方法Stream.toList() 。 这个方法位于kotlin.streams 。 IDE(IntelliJ)不允许在流上调用此方法。 我是否必须添加一个特殊的依赖项,或者它是否应该成为标准库的一部分? 我正在使用maven,并且存在对kotlin-stdlib-jdk8 1.2.10的依赖。 注意:流是从库函数返回的,所以我必须使用它。 请不要回答像“在kotlin你不使用流…”。

如何使用Android中的Kotlin从NavigationView的headerLayout中指定的布局访问视图

我想要访问NavigationView的headerLayout内包含的TextView。 是否有可能使用Kotlin android扩展来访问视图? 我没有使用此方法,但TextView(这里txtName)始终为空。 这是我的activity_main.xml nav_header_splash.xml 在MainActivity.kt我已经导入 import kotlinx.android.synthetic.main.nav_header_splash.* 在Activity类的onCreate()中设置文本类似 txtName.text = “Sample Code” 应用程序文件夹的构建 apply plugin: ‘kotlin-android-extensions’ 建立我的项目 classpath “org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version” 我的代码有错吗? 请帮忙。 我是Kotlin的新人。

如何使用Kotlin在Android中分享图像?

我想分享一个位于资产文件夹的图像使用’Kotlin’.How我可以实现类似的代码块在android: Intent intent = new Intent(Intent.ACTION_SEND); intent.setType(“image/jpeg”); intent.putExtra(Intent.EXTRA_STREAM, uri); startActivity(Intent.createChooser(intent, “Share Image”));

Android Studio和Kotlin:未解决的参考:也

也从Android Studio编译并运行: val greeted = “World”.also { println(“Hello $it”) } 然而,编辑also强调, it是错误的,不给任何帮助intellisense。 申请仍然有效,当我去源时,我可以看到既apply also定义。 我如何让Android Studio also能识别? Android Studio 2.3.3 kotlin_version =’1.1.3-2′ Kotlin插件1.1.3-release-Studio2.3-2 我也有早期版本的这个问题。

kotlin:扩展方法和null接收者

在obj.method()扩展方法中, obj.method()是SomeUtil.method(obj)的语法糖。 它允许obj为null。 Kotlin扩展方法是静态解析的,所以我认为它是和我写的时候一样的语法糖 fun Any.stringOrNull() = this?.toString() 我收到了关于非空接收方不必要的安全呼叫的警告。 这是否意味着我不能像lombok那样在空对象上调用扩展函数?

这个引用在kotlin扩展属性的lazy初始值设定中

我正在尝试Kotlin,并希望为Activity实现一个惰性扩展属性: /** * Activity module */ val Activity.activityModule: ActivityModule by lazy { ActivityModule(this) } 编译器错误与: ‘this’ is not defined in this context 我如何能够将此作为“活动”? 我已阅读指南,但无法得到它。 this@Activity说参考是未解决的。

从字符串拆分空间不工作在Kotlin

有谁想知道这个? 在kotlin中拆分SPACE(“”)是不行的,我尝试了不同的正则expression式代码,但是根本不工作。 试过这个: value.split(“\\s”)[0]; value.split(“\\s+”)[0]; value.split(“\\s++”)[0]; 然后我想出了解决方案 – >创建包含此函数的Java常量类,并返回字符串数组到您的kotlin类。 有没有其他的解决方案,我们可以直接实现这个问题? 解决方案:正如@Edson Menegatti所说: 科特林具体:工作 values.split(“\\s”.toRegex())[0] 许多人提出这个解决方案: 不工作 values.split(” “)[0] 但在我的情况下,这是行不通的 。

没有大括号的Kotlin类

我注意到,我们可以在Kotlin中创建类,而不需要下面的大括号。 //Example classFile.kt class Empty class SecondEmpty fun firstMethod() { } 我的问题是,为什么我们需要这样的function? 在哪种情况下我们可以用这个? 在上面的例子中,我写了一个名为firstMethod()的方法,我怎样才能从其他对象调用?