Swift 2では、関数を呼び出すときに最初のパラメーター名が必ずしも必要ではないようです。今ではSwift 3関数の呼び出し。例:
func frobnicate(runcible: String) {
print("Frobnicate: \(runcible)")
}
Swift 2.2では、次のように入力するだけで関数を呼び出すことができました。
Frobnicate("Station")
Swift 3では、次のようなメソッドの最初のパラメーター名を使用する必要があるようです。
Frobnicate(runcible:"Station")
これは、Swift 3がすべての関数とメソッド、または特定の状況だけの場合ですか?
はい、これは正しいです。 Swiftはこの方法で言語の不整合を修正しています(これは常に初期化子に必要でした)。
外部パラメーター名を使用したくない場合は、明示的に削除します。
func frobnicate(_ runcible: String) {
print("Frobnicate: \(runcible)")
}
完全な根拠は Swift Evolution 0046 で読むことができます
I-Bookで The Swift Programming Language(Swift 3)) を読むことができます。また、WWDC 2016でこれを確認できます。 Swiftの新機能
Swift 3では、デフォルトで、関数はパラメータ名を引数のラベルとして使用します。パラメータ名の前にカスタム引数ラベルを記述するか、_を記述して引数ラベルを使用しません。
fun greet(_ person: String, on day: String) -> String {
return "Hello \(person), today is \(day)."
}
greet("John", on: "Wednesday")
または
// This also works with Swift 2
fun addThreeNumber(_ first: Int, _ second: Int, _ third: Int) {
print(first+second+third)
}
addThreeNumber(1, 2, 3)
丁度。 Swift 3.0では、すべてのパラメーター(最初のパラメーターを含む)のパラメーター名を記述することが必須です。パラメーター名は、関数実装本体内で使用される名前です。
func frobnicate(runcible: String) {
print("Frobnicate: \(runcible)")
}
パラメータラベルを明示的に指定しない場合、デフォルトでは、外部パラメータラベルはパラメータ名と同じです。パラメータラベルは、関数の呼び出し中に引数を渡すために使用されるラベルです。必要に応じて、わかりやすくするために、外部パラメーターラベルを明示的に指定することもできます。以下の例
func frobnicate(runcibleExternalLabel runcible: String) {
print("Frobnicate: \(runcible)")
}
関数の呼び出し中に外部パラメーターラベルをスキップする場合は、パラメーター名の前に「_」を追加します。
func frobnicate(_ runcible: String) {
print("Frobnicate: \(runcible)")
}
はいSwift 3では、最初のパラメーターラベルを送信する必要があります。
Swift 3の変更 を参照してください
パラメーターのラベルが必要な理由は、他のコードがパラメーターを任意の順序で提供できるようにするためです。
ラベルがないと、関数を呼び出すときにパラメーターが匿名になり、間違った順序でパラメーターを指定したかどうかを確認できません。
パラメータの前にラベルを配置し、コードツールを使用すると、人間が入力したエラーをより適切に検出できます。
アンダースコアは、従来のコードからの移行に対処するための単なる方法です。暗黙の最初のパラメーターを含むメソッド名。移行によってコードに追加されるアンダースコアは、明示的なパラメーターラベルに変更する必要があります。あなたはそれが理にかなっていることを知っています。