为什么Kotlin打印声明不需要范围说明?

时间:2017-12-31 16:57:37

标签: java scope kotlin

这可能是一个愚蠢的问题,但我对Kotlin来说是全新的。

在Java中,典型的print语句是:

System.out.println("Goodbye cruel world!");

然而,在Kotlin,我们可以写:

println("Kotlin is weird but good")

Kotlin如何解决范围澄清问题?它不像println是Kotlin中的语言构造(或者是它?)。我错过了一些明显的东西吗?在这里发生了某种隐含的重要声明吗?

请注意println只是一个例子; Kotlin还有许多其他类似的例子。

2 个答案:

答案 0 :(得分:4)

默认情况下,每个Kotlin文件都会导入许多软件包。有关这些软件包的列表,请参阅参考手册中的Default Imports

其中一个是kotlin.io.*,其中包含println功能。请注意*导入所有可访问的内容。 <{1}},顶级元素的默认visibility modifier包含在该导入中。

您可以通过使用Kotlin REPL并输入:

来证实这一点
public

或将其放入>>> kotlin.io.println("Hello") 文件并使用.kts执行。

默认导入列表中的其他函数,类等也可以以类似的方式使用。

答案 1 :(得分:3)

Kotlin支持top level functions,而println只是声明为一个,您可以看到其来源here

如果他们导入的包被导入,并且基本的Kotlin包是imported by default,则可以在没有任何限定符的情况下使用它们。