swiftベース-12-switch
5075 ワード
Swithフォーマット:switch(一致する値が必要)case一致の値:実行する文break;OC:
貫通可能
defaultを書かなくてもいいです
default位置は自由に置けます
caseで変数を定義するにはカッコを大きくする必要があります.そうしないと、役割ドメインが混乱します.
対象タイプを判断できない
swift:swift:オブジェクトタイプを判断でき、OCは整数で貫通できないbreakを書かなくてもよい.
突き抜けられないから書けない
こう書くしかない
defaultを書かないわけにはいかない
default位置は最後のみ
caseで変数を定義するにはカッコを大きくしない
区間とメタグループの一致
値バインド
条件によるバインド
char rank = 'A';
switch (rank) {
case 'A':
NSLog(@" ");
break;
case 'B':
NSLog(@" ");
break;
case 'C':
NSLog(@" ");
break;
default:
NSLog(@" ");
break;
}
貫通可能
char rank = 'A';
switch (rank) {
case 'A':
NSLog(@" ");
case 'B':
NSLog(@" ");
case 'C':
NSLog(@" ");
default:
NSLog(@" ");
}
defaultを書かなくてもいいです
char rank = 'A';
switch (rank) {
case 'A':
NSLog(@" ");
break;
case 'B':
NSLog(@" ");
break;
case 'C':
NSLog(@" ");
break;
}
default位置は自由に置けます
char rank = 'E';
switch (rank) {
default:
NSLog(@" ");
break;
case 'A': {
int score = 100;
NSLog(@" ");
break;
}
case 'B':
NSLog(@" ");
break;
case 'C':
NSLog(@" ");
break;
}
caseで変数を定義するにはカッコを大きくする必要があります.そうしないと、役割ドメインが混乱します.
char rank = 'A';
switch (rank) {
case 'A': {
int score = 100;
NSLog(@" ");
break;
}
case 'B':
NSLog(@" ");
break;
case 'C':
NSLog(@" ");
break;
}
対象タイプを判断できない
NSNumber *num = @100;
switch (num) {
case @100:
NSLog(@" ");
break;
default:
NSLog(@" ");
break;
}
swift:swift:オブジェクトタイプを判断でき、OCは整数で貫通できないbreakを書かなくてもよい.
var rank = "A"
switch rank{
case "A": // if
print(" ")
case "B": // else if
print(" ")
case "C": // else if
print(" ")
default: // else
print(" ")
}
突き抜けられないから書けない
//
var rank1 = "A"
switch rank1{
case "A": // error : 'case' label in a 'switch' should have at least one executable statement
case "B":
print(" ")
case "C":
print(" ")
default:
print(" ")
}
こう書くしかない
var rank1 = "A"
switch rank1{
case "A", "B": // notice : OC
print(" ")
case "C":
print(" ")
default:
print(" ")
}
defaultを書かないわけにはいかない
var rank2 = "A"
switch rank2{
case "A":
print(" ")
case "B":
print(" ")
case "C":
print(" ")
// error : Switch must be exhaustive , consider add a default clause
}
default位置は最後のみ
var rank3 = "A"
switch rank3{
default: // error : Additional 'case' blocks cannot appear after the 'default' block of a 'switch'
print(" ")
case "A":
print(" ")
case "B":
print(" ")
case "C":
print(" ")
}
caseで変数を定義するにはカッコを大きくしない
var rank4 = "A"
switch rank4{
case "A":
var num = 10 //
print(" ")
case "B":
print(" ")
case "C":
print(" ")
default:
print(" ")
}
区間とメタグループの一致
var num = 10;
switch (num) {
case 1...9:
print(" ")
case 10...99:
print(" ") // "
"
default:
print(" ")
}
var point = (10, 15)
switch (point) {
case (0, 0):
print(" ")
case (1...10, 10...20): //
print(" ") //"
"
case (_, 0): // X
print(" X X ")
default:
print("Other")
}
値バインド
var point1 = (1, 10)
switch point1 {
case (var x, 10): // point1 X X
print("x= \(x)") // "x= 1
"
case (var x, var y): // point1 X Y X Y
print("x= \(x) y= \(y)")
case var(x, y):
print("x= \(x) y= \(y)")
default:
print("Other")
}
条件によるバインド
var point2 = (100, 10)
switch point2{
// where case
case var(x, y) where x > y:
print("x= \(x) y= \(y)") // "x= 100 y= 10
"
default:
print("Other")
}