草庐IT

Kotlin-script

全部标签

kotlin - Kotlin 中的 tailrec 有什么意义?

tailrec优化存在尾递归的函数。为什么编译器不直接优化它?C编译器针对尾递归进行了优化。您不必将该方法标记为具有尾递归。编译器只是注意到最后一个操作是递归的。就是这样。为什么会存在这个看似过多的关键字?我错过了什么吗?纯粹是为了编译器的方便,而不是为了用户? 最佳答案 关键字告诉编译器函数的实现需要是尾递归的,如果函数实际上不是尾递归的,编译器会报错。它可以保护用户免受函数实现的更改导致其不再是尾递归,并导致性能意外下降(或由于堆栈溢出错误导致生产完全失败)的情况。 关于kotlin

kotlin - Kotlin 中的 tailrec 有什么意义?

tailrec优化存在尾递归的函数。为什么编译器不直接优化它?C编译器针对尾递归进行了优化。您不必将该方法标记为具有尾递归。编译器只是注意到最后一个操作是递归的。就是这样。为什么会存在这个看似过多的关键字?我错过了什么吗?纯粹是为了编译器的方便,而不是为了用户? 最佳答案 关键字告诉编译器函数的实现需要是尾递归的,如果函数实际上不是尾递归的,编译器会报错。它可以保护用户免受函数实现的更改导致其不再是尾递归,并导致性能意外下降(或由于堆栈溢出错误导致生产完全失败)的情况。 关于kotlin

Kotlin:如何将谓词传递给 CharSequence.any() 函数?

我正在尝试查找一个字符是否属于一个字符串。vars="abcdef"varresult=s.any('d')但我无法理解这种语法。来自docs:funCharSequence.any(predicate:(Char)->Boolean):Boolean如何将谓词传递给函数? 最佳答案 完整语法:s.any({ch->ch=='d'})我们可以做一些简化。首先,由于lambda参数在最后,我们可以将它放在括号之外并在没有更多参数时完全省略它们。其次,对于带有一个参数的lambda函数字面量,可以省略参数声明并通过it名称引用该参数。因

Kotlin:如何将谓词传递给 CharSequence.any() 函数?

我正在尝试查找一个字符是否属于一个字符串。vars="abcdef"varresult=s.any('d')但我无法理解这种语法。来自docs:funCharSequence.any(predicate:(Char)->Boolean):Boolean如何将谓词传递给函数? 最佳答案 完整语法:s.any({ch->ch=='d'})我们可以做一些简化。首先,由于lambda参数在最后,我们可以将它放在括号之外并在没有更多参数时完全省略它们。其次,对于带有一个参数的lambda函数字面量,可以省略参数声明并通过it名称引用该参数。因

java - 使用 Kotlin 时 FXML 控件始终为空

我使用IntelliJ创建了一个JavaFX应用程序,然后将Kotlin和Maven作为框架添加到其中。它带有一个sample.fxml文件和一个Controller.java和Main.java。我在Kotlin(MainWindowController.kt)中为Controller创建了一个新类,并将sample.fxml文件重命名为MainWindow.fxml。我将MainWindow.fxml更新为:在我的MainWindowController.kt文件中,我有:packagereaderimportjavafx.fxml.FXMLimportjavafx.scene.c

java - 使用 Kotlin 时 FXML 控件始终为空

我使用IntelliJ创建了一个JavaFX应用程序,然后将Kotlin和Maven作为框架添加到其中。它带有一个sample.fxml文件和一个Controller.java和Main.java。我在Kotlin(MainWindowController.kt)中为Controller创建了一个新类,并将sample.fxml文件重命名为MainWindow.fxml。我将MainWindow.fxml更新为:在我的MainWindowController.kt文件中,我有:packagereaderimportjavafx.fxml.FXMLimportjavafx.scene.c

constructor - 在 kotlin 中,如何将主构造函数中的属性 setter 设为私有(private)?

在kotlin中,如何将主构造函数中的属性setter设为私有(private)?classCity(valid:String,varname:String,vardescription:String=""){funupdate(name:String,description:String?=""){this.name=namethis.description=description?:this.description}}我希望属性name的setter是私有(private)的,而它的getter是公开的,我该怎么做? 最佳答案

constructor - 在 kotlin 中,如何将主构造函数中的属性 setter 设为私有(private)?

在kotlin中,如何将主构造函数中的属性setter设为私有(private)?classCity(valid:String,varname:String,vardescription:String=""){funupdate(name:String,description:String?=""){this.name=namethis.description=description?:this.description}}我希望属性name的setter是私有(private)的,而它的getter是公开的,我该怎么做? 最佳答案

kotlin - 如何从 Kotlin 的内部类调用外部类的 super 方法?

Java的OuterClass.super.method()的Kotlin等价物是什么?示例(Java中):classOuter{classInner{voidsomeMethod(){Outer.super.someOtherMethod();}}@OverridepublicStringsomeOtherMethod(){//Thisisnotcalled...}} 最佳答案 使用super@OuterClass.method()语法:openclassC{openfunf(){println("C.f()")}}classD:

kotlin - 如何从 Kotlin 的内部类调用外部类的 super 方法?

Java的OuterClass.super.method()的Kotlin等价物是什么?示例(Java中):classOuter{classInner{voidsomeMethod(){Outer.super.someOtherMethod();}}@OverridepublicStringsomeOtherMethod(){//Thisisnotcalled...}} 最佳答案 使用super@OuterClass.method()语法:openclassC{openfunf(){println("C.f()")}}classD: