Kotlin:对Lambda的声明

我怎样才能做一个Kotlin声明到lambda? 我知道你可以这样做: fun foo() : () -> Unit { return { println("Hello World") } } //more beautiful: fun foo() : () -> Unit = { println("Hello World") } 是否也可以创建一个匿名lambda没有大括号{…} ? 特别是在switch语句中,花括号的常用方式看起来不太好。 fun bar(i: Int) : () -> Unit { return when (i) { 0 -> { { println("Hello") } } 1 -> { { println("World") […]

Kotlin – 期待会员声明

我试图将我的应用程序从Java转换到Kotlin。 我使用了Android Studio Built-in转换器,并修复了大部分生成的错误。 对Kotlin来说,这是一个非常辛苦的时刻: 我得到了这个类是用Java编写和转换,显然没有任何错误,这有助于我在一个RecyclerView管理项目点击: class ItemClickSupport private constructor(private val mRecyclerView: RecyclerView) { private var mOnItemClickListener: OnItemClickListener? = null private var mOnItemLongClickListener: OnItemLongClickListener? = null private val mOnClickListener = View.OnClickListener { v -> if (mOnItemClickListener != null) { val holder = mRecyclerView.getChildViewHolder(v) mOnItemClickListener!!.onItemClicked(mRecyclerView, holder.adapterPosition, v) } } private val mOnLongClickListener = View.OnLongClickListener { v […]

匿名Kotlin监听器中未解决的引用

我有下面的代码。 这是Kotlin。 任何想法为什么来自textToSpeech.setLanguage(Locale.UK)说是没有解决textToSpeech参考? val textToSpeech = TextToSpeech( applicationContext, object : TextToSpeech.OnInitListener { override fun onInit(status: Int) { if (status == TextToSpeech.SUCCESS) { textToSpeech.setLanguage(Locale.UK) } } }) 起初我认为这是一个想法kotlin插件的错误,但它似乎实际上不能被编译

Android(Kotlin)代码覆盖率异常

Android连接测试中的代码覆盖率(Jacoco)是确定哪些方法/功能需要某些TLC的非常有用的方法。 现在我正在通过Java切换到Kotlin,我发现了一些我无法解释的异常,因为这个屏幕截图显示了: 以$ _开头的方法是Kotlin或Android的内部方法,我强烈怀疑。 我的问题是:1)有没有人有任何洞察,为什么这些方法包括在雅科克代码覆盖率报告,2)有没有办法排除他们?

Kotlin中的val可插入类

我正在研究Gradle-Kotlin-Hibernate项目。 我想保留一些不可改变的类,这在Kotlin中特别容易。 这对@Entity来说很好 @Entity(name = "SOMETHING") class MeetingKeychain( val immutableProp: String ) { // ID and others } 感谢kotlin-jpa插件的使用。 但是相同的插件不能用于@Embeddable 。 @Embeddable class MeetingKeychain( val immutableProp: String ) { // ID and others } 引发以下异常: Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.component.PojoComponentTuplizer] at org.hibernate.tuple.component.ComponentTuplizerFactory.constructTuplizer(ComponentTuplizerFactory.java:98) at org.hibernate.tuple.component.ComponentTuplizerFactory.constructDefaultTuplizer(ComponentTuplizerFactory.java:119) at org.hibernate.tuple.component.ComponentMetamodel.<init>(ComponentMetamodel.java:64) at org.hibernate.mapping.Component.getType(Component.java:169) at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:398) at […]

permissionsdispatcher和多个@ NeedsPermission与kotlin

对于一个权限,我可以在java和kotlin中使用permissionsdispatcher – 但是当涉及到像这样的多个权限时: @NeedsPermission({Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH}) 我在kotlin上遇到了一个问题 – 它不能接受多个参数 – 可以和java一起工作

Kotlin – 带多个标志语法的getPendingIntent

我试图通知Java代码中的简单通知 kotlin中这一行的语法是什么? stackBuilder.getPendingIntent(0, PendingIntent.FLAG_ONE_SHOT | Intent.FLAG_ACTIVITY_NEW_TASK); 在kotlin中,我不能用'|' 为2个标志,只有这样: stackBuilder.getPendingIntent(0,PendingIntent.FLAG_ONE_SHOT)

IntelliJ的Kotlin代码编译时间很长

我已经使用Kotlin的最新版本的Eclipse 2个月没有任何性能问题在我的Windows 10计算机上。 现在我想在最近的一台OSX电脑上安装和使用intelliJ (因为它是JetBrains语言…)终极版本,我刚刚安装并且从未使用过。 这两台电脑有很好的硬件,并不限制我的测试。 我的问题是,每当我的Kotlin代码有修改,编译时间在8秒到35秒之间 。 我对简约代码进行了测试: class TestKotlin { var a = 1 } 如果我改变了变量“a”,所以需要重新编译,在最好的情况下总是需要8秒才能完成编译。 由于我想用很多小函数和汇编进行实时编码,所以这种延迟太有意义了。 观众需要等待很多才能看到每个编译的结果,他们从逻辑上期望IntelliJ工具的良好性能。 在同一个项目中,我试图做同样类型的Java类 (具有单个属性),并修改其属性以触发编译,编译时间不到1秒 。 我试图用命令行手动编译代码 : kotlinc hello.kt -include-runtime -d hello.jar java -jar hello.jar 我有一些体面的编译时间,即使是接近3秒 。 当我在编译Kotlin代码时查看IntelliJ中的“消息”屏幕时,我可以看到: Information:Kotlin: Kotlin JPS plugin version 1.0.6-release-127 Information:Kotlin: Using kotlin-home = /Users/myUsername/Library/Application Support/IntelliJIdea2016.3/Kotlin/kotlinc 它停留在这里所有的编译时间,然后几乎立即做下一步: Information:Kotlin: Kotlin Compiler version 1.0.6-release-127 Information:17/01/17 […]

Kotlin是否支持表达式树?

似乎有一个计划,在语言中包括这个功能,但我找不到有关它的任何文档。 Kotlin是否支持表达式树? 这个功能仍然在路线图上吗?

Kotlin lambda有几个参数

我有点困惑kotlin lambda表达。 找不到合适的答案。 在Java中,我可以用tho参数设置一个监听器: myObject.setListener(new MyListener() { @Override public boolean doSmth(int pos, int value) { switch(..) { …. } } }) 用lambda: myObject.setListener((p1, p2) -> { switch(..) { …. } }) 在Kotlin,我可以这样做: myObject.setListener{p1, p2 -> return@setListener false} 要么 myObject.setListener{{p1, p2 -> if (p1) { return@setListener true } else { return@setListener false } }} 但它真的很丑。 有没有办法做到这一点? […]