2015-05-04 82 views
1

在蘋果的書斯威夫特中,我發現這個摘錄:DOC聲明時和方法

類的方法有從功能的重要區別之一。函數中的參數名稱僅在函數中使用,但在調用方法時也會使用方法中的參數名稱(第一個參數除外)。默認情況下,當您調用方法並在方法本身內時,方法的參數名稱相同。您可以指定在方法內部使用的第二個名稱。

我完全不知道這意味着什麼。他們給出的例子沒有澄清任何事情。請有人請給我一個例子嗎? (也許明確地顯示了摘錄提到的區別。)

+0

http://www.apeth.com/swiftBook/ch02.html#_external_parameter_names – matt

回答

2

在斯威夫特,你可以定義其參數有一個名字叫做外部時功能,但是當你使用它們作爲函數定義內部變量的另一個名字。這使得你的代碼更具可讀性,就像英文句子而不是代碼。

例如,你可以定義如下一個文件,寫功能:

func writeData(data: NSData, 
    toFileName fileName: String, 
    withCompletionHandler completionHandler:() ->()) { 
     // ... 
} 

從外面看,你會使用的參數名toFileNamewithCompletionHandler調用該函數。

self.writeData(data, toFileName: "FileName.txt", withCompletionHandler: nil) 

但是,當您定義的文件寫入行爲本身的功能裏面,你將需要訪問它的變量名是datafileNamecompletionHandler的參數。

func writeData(...) { 
    let successful = SomeFileWriter.writeData(data, fileName: fileName) 

    if successful == true { 
     completionHandler() 
    } 
} 

如果你想在外部和內部的參數名稱是一樣的,你可以明確地使用哈希標記在參數名稱的前面:

func writeData(#data: NSData, #fileName: String, #completionHandler:() ->()) { 

} 

但你並不需要做的這個。如果您沒有提供外部參數名稱,則Swift會假定內部和外部參數名稱相同。

+0

對不起,我剛剛開始使用Swift,所以這讓我困惑:'() - >() 這是什麼意思?我知道這是一個函數,但爲什麼不指定參數或返回類型? – dfsdf

+0

啊,因爲它是一個沒有收到參數的函數,並且什麼也不返回。 :)僅供參考,我可以把它寫成'() - > Void',效果是一樣的。 –

+0

明白了,謝謝! – dfsdf