2017-12-31 194 views
2

これは愚かな質問かもしれませんが、私はKotlinにとってまったく新しいものです。 JavaではKotlinプリントステートメントでスコープの明確化が必要なのはなぜですか?

、典型的なprint文は次のとおりです。

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

しかし、Kotlinに、私たちは書くことができます。

println("Kotlin is weird but good") 

をどのようにKotlinは、ここでは、スコープの明確化を回避するのですか? printlnはKotlinの言語構造です(そうですか?)。私はここで何かを見逃していますか?ここで何らかの暗黙的なimport文が発生していますか?

ここではprintlnは例です。 Kotlinには他にも多くの同様の事例があります。

答えて

3

コトルはtop level functionsをサポートし、printlnは単に1と宣言されています。そのソースはhereです。

これらは、パッケージがインポートされ、基本Kotlinパッケージがimported by defaultである場合、修飾子なしで使用できます。

3

多くのパッケージは、デフォルトですべてのKotlinファイルにインポートされます。これらのパッケージの一覧については、「リファレンス・マニュアル」のDefault Importsを参照してください。

機能を含むkotlin.io.*のいずれかです。 *はアクセス可能なすべてのコンテンツをインポートすることに注意してください。 public、トップレベル要素のデフォルトのvisibility modifierがそのインポートに含まれています。

>>> kotlin.io.println("Hello") 

をか.ktsファイルにそれを置くとkotlinc -script filenameとそれを実行する:

あなたはKotlin REPLを使用して入力することのいずれかによって、これを裏付けることができます。

他の機能、デフォルトのインポートのリストからのクラスなども同様の方法で使用できます。

0

それは知って

println() 

は、Javaの

System.out.println(); 

への呼び出しにコンパイルされていることをいくつかのパッケージがkotlin.io.*そのうちの1つは、デフォルトですべてのKotlinファイルにをインポートされます。面白いですそこでは、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) 
} 

その結果、あなたはあなたがそれを呼ばれると、追加のインポートがいずれかの必要はありませんと「スコープ」を定義する必要はありません。

関連する問題