2017-03-10 6 views
-2

Swift 3では、後続のクロージャで文字列固有の実装を使用できますか?Swift 3 Closure

let names = ["Ekram","Galib","Hasan","Rangon","Asif","Saikat"] 

let reversedName = names.sorted{ > } 

答えて

3

なぜ末尾の閉鎖に>をラップ? sorted(by:)は機能を持ち、>はすでに署名に一致しています。だから行います

let reversedName = names.sorted(by: >) 

もしかしたら非自明な事柄を述べるために:

a)は、通常の関数のようスウィフト仕事でオペレーターを、例えばこの場合かなったようなfunc > <T>(lhs: T, rhs: T) -> Bool

b)のスウィフト関数でAPIが閉鎖を想定した場合、閉鎖命名されている((lhs: T, rhs: T) -> Boolのように)、あなたはまた、>またはfunc compareTheTwo(a: String, b: String) -> Bool

+0

ohhありがとう.. –

+0

クローズは無名関数ではありません - 関数はクロージャという名前です。 – Hamish

+0

ニックピッチの場合、正確には 'SWIFT'という名前のクロージャーになります;-) – hnh

0

うん、しかし、あなたは、あなたが実際に比較していることにどの引数を指定する必要があります。

let reversedNames = names.sorted { $0 > $1 } 
+1

や 'names.sortedのように、名前の関数を使用することができます(by:>) ' – Hamish

+0

Ohhは本当にありがとうございます:) –