1
私はSwiftを初めて利用しています。私は、添字マッチングのいくつかの奇妙な行動を見つけた:Swift 3.1でCharacter subscriptを使用するには?
struct SubscriptTest {
subscript(character: Character) -> String {
return "Character: \(character)"
}
subscript(string: String) -> String {
return "String: \(string)"
}
subscript(int: Int) -> String {
return "Int: \(int)"
}
}
let test = SubscriptTest()
test["abc"] // String: abc
test[13] // Int: 13
test[""] // String: (surprisingly)
私は最後のテストが私のCharacter
添字、ないString
ものと一致するだろうと思いました。最後に一致するものが使われているかもしれないと考えて、添え字宣言の順序を入れ替えようとしました。何も変わらなかったので、String
添え字はまだ単一のCharacter
のために使用されています。
私はちょうどString
サブスクリプトを使用して文字の数を確認することができます知っているが、私の質問の根源は好奇心です。
なぜCharacter
添え字はここで決して一致しませんか?
Swiftにはタイプ優先度のようなものがありますか? –
@RoboRobok:リテラルのデフォルトの型があります。 '123'は' Int'や 'Float'や' Double'や 'UInt64'や...とすることができます。文脈から何も推測できない場合は 'Int'とみなされます。 –
私はSwiftがますます大好きです:) –