为什么Kotlin印刷声明不要求作出范围澄清?
这可能是一个愚蠢的问题,但我是Kotlin全新的。
在Java中,典型的打印语句是:
System.out.println("Goodbye cruel world!");
但是,在Kotlin,我们只能写:
println("Kotlin is weird but good")
Kotlin如何在这里得到范围澄清? 这不是像println
是Kotlin的语言结构(或者是?)。 我在这里错过了很明显的东西吗 是否有某种隐含的import语句在这里发生?
请注意, println
只是一个例子。 Kotlin还有许多其他类似的例子。
Kotlin支持顶层函数 ,而println
只是声明为一个,你可以在这里看到它的来源。
如果它们所在的软件包已导入,则可以不使用任何限定符,而默认情况下会导入基本的Kotlin软件包。
每个Kotlin文件默认导入一些软件包。 请参阅参考手册中的默认导入以获取这些软件包的列表。
其中之一是包含println
函数的kotlin.io.*
。 请注意*
导入所有可访问的内容。 public
,该顶级元素的默认可见性修饰符包含在该导入中。
您可以通过使用Kotlin REPL来证实这一点,并输入:
>>> kotlin.io.println("Hello")
或者把它放在一个.kts
文件中并用kotlinc -script filename
执行。
从默认导入列表中的其他函数,类等也可以以类似的方式使用。
知道这一点很有意思
println()
正在被编译成对Java的调用
System.out.println();
有些软件包默认导入到每个Kotlin文件中 ,其中一个是kotlin.io.*
。 在那里, println
函数被定义为顶层函数,例如:
/** Prints the given message and newline to the standard output stream. */ @kotlin.internal.InlineOnly public inline fun println(message: Any?) { System.out.println(message) }
因此,您不需要在调用它时定义“范围”,也不需要额外的导入。