SORU
5 HAZİRAN 2014, PERŞEMBE


Swift : eksik değişken 'xxx' çağrısı etiketi

func say(name:String, msg:String) {
    println("\(name) say \(msg)")
}

say("Henry","Hi,Swift")  <---- error because missing argument label 'msg' in call

Kullanmam lazım

   say("Henry",msg:"Hi,Swift")

Neden ? Bu işlev aradığımda ilk var yerine var adını yazmam gerekiyor, böylece işlev daha var koyarsam
Gerçekten sorun değil, ve herhangi bir mor Swift öğretici açıklama göremiyorum.

CEVAP
5 HAZİRAN 2014, PERŞEMBE


Olası bir nedeni, aslında bir yöntem olmasıdır. Yöntemleri çok sinsi, düzenli fonksiyonları gibi görünüyorlar, ama aynı şekilde hareket, bir bakalım onlar yok:

func funFunction(someArg: Int, someOtherArg: Int) {
    println("funFunction: \(someArg) : \(someOtherArg)")
}

// No external parameter
funFunction(1, 4)

func externalParamFunction(externalOne internalOne: Int, externalTwo internalTwo: Int) {
    println("externalParamFunction: \(internalOne) : \(internalTwo)")
}

// Requires external parameters
externalParamFunction(externalOne: 1, externalTwo: 4)

func externalInternalShared(#paramOne: Int, #paramTwo: Int) {
    println("externalInternalShared: \(paramOne) : \(paramTwo)")
}

// The '#' basically says, you want your internal and external names to be the same

// Note that there's been an update in Swift 2 and the above function would have to be written as:

func externalInternalShared(paramOne paramOne: Int, #paramTwo: Int) {
    print("externalInternalShared: \(paramOne) : \(paramTwo)")
}

externalInternalShared(paramOne: 1, paramTwo: 4)

Şimdi işin komik kısmı, bir sınıf içinde bir işlev bildirmek ve artık bir işlevi ... bir yöntem değil

class SomeClass {
    func someClassFunctionWithParamOne(paramOne: Int, paramTwo: Int) {
        println("someClassFunction: \(paramOne) : \(paramTwo)")
    }
}

var someInstance = SomeClass()
someInstance.someClassFunctionWithParamOne(1, paramTwo: 4)

Bu yöntem için davranış tasarımının bir parçası

Apple Dokümanlar:

Özellikle, Swift varsayılan bir yöntem ilk parametre adı yerel parametre adı verir, ve ikinci parametre adları varsayılan olarak hem yerel hem de dış parametre adlarını verir. Bu Sözleşme yazılı aşina olacaksınız tipik bir adlandırma ve çağırma kuralı Objective-C yöntemleri maçlar ve etkileyici yöntem için yapar parametre adları nitelemek için gerek kalmadan çağırır.

Dikkat edin otomatik tamamlama: enter image description here

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • atKristaBradford

    atKristaBrad

    4 Aralık 2010
  • Dirty Loops

    Dirty Loops

    21 Mayıs 2007
  • How It Should Have Ended

    How It Shoul

    5 Mart 2007