2.1.3 类和函数是可选的

与Java等语言不同,Kotlin不要求语句或表达式属于一个方法,也不要求方法属于一个类,至少在我们编写的源代码中不是这样。当代码被编译或作为脚本执行时,Kotlin将根据需要创建包装类和方法,以满足JVM的期望。

在下面的源代码中,函数不属于一个类,函数下面的代码是独立的,不是任何函数的一部分。尽管如此,Kotlin会在必要时将它们包装成类,以满足JVM的需要。

让我们创建一个脚本,其中包含一个不属于任何类的函数和一些不属于任何函数的独立代码。

函数下面的独立代码体调用不属于任何类的函数nofluff()。函数因异常而崩溃,调用代码从异常中打印堆栈的顶部两帧。这段代码的输出表明,首先,Kotlin没有强迫我们编写类和方法,其次,它自动将代码包装到一个类。

Kotlin悄悄地将函数nofluff()转换为一个名为Standalone的合成类的方法——从文件名推断出的名称,并将独立代码转换为类的构造函数,如输出中的<init>所示。

在编写小段代码时,将代码直接放在一个文件中,并将其作为脚本来运行——不需要仪式来创建类和方法。但是在处理较大的应用程序时,可以创建类和方法。简单的代码可以很简单,而更复杂的代码可以有更好的严谨性和结构。