为什么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) } 

因此,您不需要在调用它时定义“范围”,也不需要额外的导入。