-1

如何指定我想要一个特定的readLine()

cat >so.kt <<EOF
fun readLine():String{return "5"}
fun main() {
print("Enter an Integer value: ") 
var an_int = readLine()?.toInt()  
    println("Which readLine() -- an_int: \$an_int")
    }
EOF
kscript so.kt 
Enter an Integer value: Which readLine() -- an_int: 5
4

1 回答 1

2

简短回答:使用函数的完全限定名称。

通常,无条件调用:

    readLine()

将参考kotlin.io.readLine(). (kotlin.io默认导入的包之一。)但是如果readLine()在范围内有一个本地函数,就像这里一样,那么它会引用它。

但是,如果您符合条件:

    kotlin.io.readLine()

然后你得到一个指定的stdlib。这是一个适用于类名的一般原则(在 Java 和 Kotlin 中):非限定名称可能是不明确的,但完全限定名称不是*

(另请注意,如果您只是进行更改,它将不会编译;stdlib 函数可以返回 null(如果命中流结束),因此您需要处理它。)

( *不过,由于无法进一步限定默认包中的类和函数,这些仍然会造成麻烦。这就是为什么最好将代码放在命名包中的原因。)

于 2019-09-13T20:08:36.680 回答