web-dev-qa-db-ja.com

Swift 3つの最初のパラメーター名

Swift 2では、関数を呼び出すときに最初のパラメーター名が必ずしも必要ではないようです。今ではSwift 3関数の呼び出し。例:

func frobnicate(runcible: String) { 
    print("Frobnicate: \(runcible)") 
}

Swift 2.2では、次のように入力するだけで関数を呼び出すことができました。

Frobnicate("Station")

Swift 3では、次のようなメソッドの最初のパラメーター名を使用する必要があるようです。

Frobnicate(runcible:"Station")

これは、Swift 3がすべての関数とメソッド、または特定の状況だけの場合ですか?

18
Cosmic Arrows

はい、これは正しいです。 Swiftはこの方法で言語の不整合を修正しています(これは常に初期化子に必要でした)。

外部パラメーター名を使用したくない場合は、明示的に削除します。

func frobnicate(_ runcible: String) { 
    print("Frobnicate: \(runcible)") 
}

完全な根拠は Swift Evolution 0046 で読むことができます

33
Sulthan

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)
16
Willjay

丁度。 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の変更 を参照してください

2
onkar

パラメーターのラベルが必要な理由は、他のコードがパラメーターを任意の順序で提供できるようにするためです。

ラベルがないと、関数を呼び出すときにパラメーターが匿名になり、間違った順序でパラメーターを指定したかどうかを確認できません。

パラメータの前にラベルを配置し、コードツールを使用すると、人間が入力したエラーをより適切に検出できます。

アンダースコアは、従来のコードからの移行に対処するための単なる方法です。暗黙の最初のパラメーターを含むメソッド名。移行によってコードに追加されるアンダースコアは、明示的なパラメーターラベルに変更する必要があります。あなたはそれが理にかなっていることを知っています。

0
elves