Kotlin中的“by”关键字做了什么?

Kotlin中的“by”关键字做了什么? 我有时遇到这样的事情看起来像这样,而为Android的发展: var someModel: someViewModel by notNullAndObservable { vm -> … } 我不明白“by”关键字的意义是什么。

Kotlin总是空的Field Annotation

我有以下Kotlin注释 @Target(AnnotationTarget.FIELD, AnnotationTarget.PROPERTY_GETTER) @Retention(AnnotationRetention.RUNTIME) annotation class Field(val value: String) 和下面的测试代码 class TestObject(@field:Field("id") val id: Long) { @field:Field("string") val string = "Hello world" @get:Field("prop") val prop get() = string } class AnnotationTest { @Test fun test() { val obj = TestObject(200L) for (member in obj::class.declaredMemberProperties) { if (member.findAnnotation<Field>() != null) { println(member) } println(member) println(member.annotations) } […]

Android + Kotlin – 项目不再建设

您好kotlin用户和维护者, 由于我已经将Intellij IDEA更新到2016版的最新补丁,所以在尝试编译我的android项目时遇到了这个问题。 java.lang.IllegalStateException at org.jetbrains.kotlin.types.SubstitutionUtils.fillInDeepSubstitutor(SubstitutionUtils.java:80) at org.jetbrains.kotlin.types.SubstitutionUtils.fillInDeepSubstitutor(SubstitutionUtils.java:96) at org.jetbrains.kotlin.types.SubstitutionUtils.buildDeepSubstitutionMultimap(SubstitutionUtils.java:65) at org.jetbrains.kotlin.resolve.DeclarationsChecker.checkSupertypesForConsistency(DeclarationsChecker.kt:241) at org.jetbrains.kotlin.resolve.DeclarationsChecker.checkTypeParameterConstraints(DeclarationsChecker.kt:394) at org.jetbrains.kotlin.resolve.DeclarationsChecker.checkFunction(DeclarationsChecker.kt:660) at org.jetbrains.kotlin.resolve.DeclarationsChecker.process(DeclarationsChecker.kt:123) at org.jetbrains.kotlin.resolve.BodyResolver.resolveBodies(BodyResolver.java:233) at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer.analyzeDeclarations(LazyTopDownAnalyzer.kt:192) at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel.analyzeDeclarations(LazyTopDownAnalyzerForTopLevel.java:74) at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel.analyzeFiles(LazyTopDownAnalyzerForTopLevel.java:66) at org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.java:145) at org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext(TopDownAnalyzerFacadeForJVM.java:78) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.analyze(KotlinToJVMBytecodeCompiler.kt:290) at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:129) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:283) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyzeAndGenerate(KotlinToJVMBytecodeCompiler.kt:269) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileBunchOfSources(KotlinToJVMBytecodeCompiler.kt:194) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:196) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:49) at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.java:181) at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.callCompiler(Tasks.kt:87) at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.compile(Tasks.kt:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) […]

Kotlin:双冒号(反射)运算符结束

所以我正在与VertX Web合作,试图让它与Kotlin合作。 有一个路由器,你不得不说 val vertx = Vertx.vertx() val server = vertx.createHttpServer() val router = Router.router(vertx) server.requestHandler(router::accept) 但它不起作用。 我究竟做错了什么? 当我在Kotlin定义的类上使用它时,它表现正常。 是故意的吗? 无论如何,我必须像这样手动完成 server.requestHandler{router.accept(it)}

在Kotlin中使用`for`循环的因子

有了java编程的经验,我开始学习Kotlin。 我正在玩的语言,发现我坚持找到一个阶乘使用循环kotlin。 我设法使用while循环来做到这一点。 import java.util.Scanner fun main(args: Array<String>){ val reader=Scanner(System.`in`) val x: Int = reader.nextInt() println(factorial(x)) } fun factorial(a: Int): Int{ var ans=1 var i: Int = a while(i>1){ ans*=i i– } return ans } 请帮我做一个for循环。 谢谢

Kotlin是否具有“特质”类型?

我一直在找Kotlin例子中提到的trait 。 例如,这个答案使用trait 。 Kotlin中使用了trait关键字吗? 如果是,我可以在哪里找到关于它的信息,如果不是的话,它在某些时候是否是语言规范的一部分?

kotlin中数据类的等价方法

我有以下的数据类 data class PuzzleBoard(val board: IntArray) { val dimension by lazy { Math.sqrt(board.size.toDouble()).toInt() } } 我读了Kotlin中的数据类,可以免费获得equals()/ hashcode()方法。 我实例化了两个对象。 val board1 = PuzzleBoard(intArrayOf(1,2,3,4,5,6,7,8,0)) val board2 = PuzzleBoard(intArrayOf(1,2,3,4,5,6,7,8,0)) 但是下面的语句仍然返回false。 board1 == board2 board1.equals(board2)

Kotlin懒惰的默认属性

在Kotlin中,我如何定义一个具有惰性默认值的变量? 比如val就是这样的: val toolbarColor by lazy {color(R.color.colorPrimary)} 我想要做的是,有一个属性( toolbarColor )的默认值,我可以改变这个值的其他任何东西。 可能吗? 编辑:这是部分把戏。 var toolbarColor = R.color.colorPrimary get() = color(field) set(value){ field = value } 有没有可能通过写作来缓解这一点 var toolbarColor = color(R.color.colorPrimary) set(value){ field = value } 在默认值的计算方式懒惰? 目前它不会工作,因为color()需要一个只在稍后初始化的Context 。

无法转换为kotlin中的集合

我试图将列表转换为kotlin中的LinkedList,这里是我的代码与intellij错误 但是在Kotlin REPL,我可以做这样的事情 我的代码有什么问题?

将不推荐使用的方法从Java转换为Kotlin

我使用Android Studio将代码从Java转换为Kotlin,但是我遇到了问题。 当我使用这个: MenuItemCompat.setOnActionExpandListener(MenuItem.OnActionExpandListener) Android Studio告诉我, setOnActionExpandListener在Java中已被弃用。 那么我怎样才能转换这个代码在Kotlin? 谢谢 !