2016-07-12 10 views
0

私はSwiftの経験があまりなく、PHP/Python/JavaScriptのバックグラウンドから来ています。Swiftの文字列はオペレータの仕事よりもどうですか

私はthe following code snippetに出くわしたとき、私は、スウィフトプログラミング言語のドキュメントを読んでいた:>オペレータは、この文脈でどのように働くか、私は見つけることができるようには見えません。何

let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"] 

func backwards(s1: String, _ s2: String) -> Bool { 
    return s1 > s2 
} 

names.sort(backwards) // ["Ewa", "Daniella", "Chris", "Barry", "Alex"] 

が、あります、誰かがここで何が起こっているかを説明してもらえ

"CD" > "ABC" // true 

:私はそれが文字の量をカウントして、それに基づいてブール値を返しますが、そのロジックで以下のスニペットはfalseを返す必要がありますような何かを行うだろうと思いましたか?ありがとうございました。

+0

現在の知識/文字列比較の理解は何ですか? – Wain

+0

@Wain他の言語では、基本的な '=='、 '==='、 '!='のみを使用していますので、使用されているより大きい/より小さい値を見ることは全く新しいです – Paradoxis

答えて

1

私はjavascriptがまったく同じ文字列比較アプローチと同じ構文を使用すると信じています。 JavaScriptでlocaleCompare()を使用することもできます。また、迅速にlocalizedCompare(_:)(または他の文字列比較関数の1つ)を使用することもできます。それらはアルファベット順に文字列を比較するために、すべての方法が異なり、オプションも異なります。

+2

追加、Swift 2.2.30: [String.swiftソースコード](https://github.com/apple/swift/blob/master/stdlib/public/core/String.swift)から、たとえば'String'の' <'演算子は' lhs._compareString(rhs)<0'( '_swift_stdlib_unicode_compare_utf8_utf8'自体を使用します)として定義されており、https://github.com/apple/swift/blob経由で追跡できます/master/stdlib/public/stubs/UnicodeNormalization.cppを 'ucol_strcollIter'(collat​​orの' MakeRootCollat​​or'を参照)から[ICU lib](http://icu-project.org/apiref/icu4c/ucol_8h.html)にコピーしてください。すなわち、[ユニコード照合](http://unicode.org/reports/tr10/)を使用します。 – dfri

0

スウィフトは辞書編集文字列比較を行います。これはあなたがそれをチェックアウトする前に尋ねられましたhere

関連する問題