Kotlin中的静态初始化块

Kotlin中的静态初始化块相当于什么? 我明白,Kotlin被设计成没有静态的东西。 我正在寻找具有同等语义的东西 – 代码在第一次加载时运行一次。 我的具体使用情况是,我想从Android AppCompat库启用DayNight功能,并说明将一些代码放在Application类的静态初始化块中。

比较字符串Kotlin

我正在学习kotlin,但是我很失望,我无法比较两个字符串。 什么是正确的比较方式。 btn_login.setOnClickListener { val login = input_email.text.trim() val pass = input_password.text.trim() if( login.equals( pass ) ){ startActivity<MainActivity>() } if (login?.equals(other = pass)){ startActivity<MainActivity>() } if (login == pass){ startActivity<MainActivity>() } }

在Kotlin填充字符串

我试图在Kotlin中填充字符串以在控制台输出上实现一些正确的对齐。 沿着这些线路的东西: accountsLoopQuery – "$.contactPoints.contactPoints[?(@.contactAccount.id)]" brokerPassword – ***** brokerURI – tcp://localhost:61616 brokerUsername – admin contactPointPriorityProperties – "contactPointPriority.properties" customerCollection – "customer" customerHistoryCollection – "customer_history" defaultSystemOwner – "TUIGROUP" 我最终以这种方式编码 – 用Java的String.format作弊: mutableList.forEach { cp -> println(String.format("%-45s – %s", cp.name, cp.value)) } Kotlin库有没有适当的方法?

Android工作室Kotlin插件错误

我正在尝试安装android studio的kotlin插件,并遵循本指南 。 一切都编译好,我可以在我的项目中使用.kt文件。 但是,在每个kotlin文件中,android-studio都提到了以下内容: Kotlin库'compiler-1.0-rc1.jar'具有不受支持的格式。 请更新库或插件 我怎样才能删除这个警告/错误? 这是我的顶级build.gradle : buildscript { repositories { mavenCentral() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath 'me.tatarka:gradle-retrolambda:3.2.3' classpath "com.android.databinding:dataBinder:1.0-rc1" classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.14.449' } } allprojects { repositories { mavenCentral() jcenter() } } 这是我的build.gradle在app目录中: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { //Ommited for brevity sourceSets { main.java.srcDirs += 'src/main/kotlin' } […]

Kleisli在Kotlin求幂

我试图写下Kotlin的Kleisli指数: fun <A,B> kleisli(n: Int, f: (A) -> B): (A) -> B = if (n == 1) f else { it -> f(kleisli(n-1, ::f)(it)) } 只是组成f , n次(请不要在我的代码中加n = 0 )。 Kotlin(1.0.6)抱怨error: unsupported [References to variables aren't supported yet]指向::f 。 我做错了什么?

使用kotlin的房间数据库

我将java代码转换为kotlin代码,我得到类型未解决的java类错误。 我的Java类是 Room.databaseBuilder(context.getApplicationContext(), EventDatabase.class, "event_db").build(); 转换Kotlin类 Room.databaseBuilder<EventDatabase>(context.applicationContext, EventDatabase::class.java!!, "event_db").build() 谢谢。

什么是kotlin-gradle-plugin和kotlin-js-library之间的正确版本匹配?

我有: ext.kotlin_version = '1.1.3' ext.kotlin_js_version = '1.1-M04' repositories { mavenCentral() maven{ url = "https://dl.bintray.com/kotlin/kotlin-dev/" } } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } 然后在另一个build.gradle: dependencies { compile "org.jetbrains.kotlin:kotlin-js-library:$kotlin_js_version" } 但我总是得到: org.jetbrains.kotlin / kotlin-js-library / 1.1-M04 / ef6b315dbb89927eb72fbce262ba3a74dc1ebcb5 / kotlin-js-library-1.1-M04.jar'是与Kotlin不兼容的版本编译的。 其元数据的二进制版本是6.0.0,预期版本是1.0.1 我想要最新的两个。 我认为? 还是一个落后于另一个呢?

在Kotlin的意图

所以,我知道在Java中我们使用这个来启动新的Activity Intent intent = new Intent(this, SomeActivity.class); startActiviry(intent); 但是我正在使用Kotlin写一个项目,所以在Kotlin就像 val intent = Intent(this,SomeActivity::class.java) startActivity(intent) 但它与问题崩溃 FATAL EXCEPTION: main Process: com.pashabred.passlin, PID: 15243 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pashabred.passlin/com.pashabred.passlin.Enterring}: kotlin.KotlinNullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: kotlin.KotlinNullPointerException […]

Android数据绑定和Kotlin

我将我的Android应用程序从Java转换为Kotlin。 它工作正常,除了当我尝试转换使用Android数据绑定库的文件。 在这种情况下,Android Studio会在编译时抱怨未解决的引用: Error:(10, 44) Unresolved reference: AdapterHistoriesListBinding 其中AdapterHistoriesListBinding是应该由数据绑定库生成的文件的名称。 它在Java中正常工作,所以我猜这是Kotlin的一个问题。 我正在使用Android Studio 2.0.0-beta6,Android Gradle Plugin 2.0.0-beta6和Kotlin 1.0。 数据绑定库和Kotlin一起工作有什么需要做的吗?

Kotlin zipAll替代

Kotlin的功能是否像Scala中的zipAll一样? 在scala我可以做两个不同长度的数组的总和使用zipAll函数。 斯卡拉: val arrA = Array(1,2,3) val arrB = Array(4, 5) arrA.zipAll(arrB, 0, 0).map(x => x._1 + x._2) 或者在Kotlin中做到这一点的正确方法是什么?