This time, I learned about switch statements, so I will output them.
*** In a nutshell, a switch statement is a control syntax that uses a pattern to switch an executable statement according to the value of a control expression. *** ***
The basic writing method is as follows
qiita.rbvar
switch control type{
case pattern 1:
Statement executed when the control expression matches pattern 1
case pattern 2:
Statement executed when the control expression matches pattern 2
default:
Statement executed when the control expression does not match any pattern
}
The switch statement has the characteristic that once it matches and the execution statement is executed, the matching ends and the subsequent patterns are skipped. The if statement and guard statement were branches into two cases, whether or not they hold, but the *** switch statement can branch into more cases. *** ***
Let's look at a simple example next
qiita.rbvar
let a = -2
switch a {
case Int.min..<0:
print("is a negative value of a")
case 1..<Int.max:
print("a is a positive value")
default:
print("a is 0")
}
Execution result:a is a negative value
You can use the where keyword to add conditions that match the case. That's all, so let's take a look at the basic syntax right away!
qiita.rbvar
switch control type{
case pattern control expression:
Control expression matches pattern 1,And,Statement executed when the conditional expression is satisfied
default:
Statement executed when the control expression does not match any pattern
The following is a simple example.
qiita.rbvar
let optionalA: Int? = 5
switch optionalA {
case .some(let a)where a > 10:
print("Value greater than 10\(a)Exists")
default:
print("Value does not exist,Or less than 10")
Execution result:Value does not exist,Or less than 10
In the above example, the constant optionalA has a value, so it matches the *** case .some (let a) *** part, but does not meet the condition where a> 10.
A break statement is a statement that interrupts the execution of a switch statement case. Let's look at a simple example.
qiita.rbvar
let a = 1
switch a{
case 1:
print("Login was successful")
break
print("I failed to login")
default:
break
}
Execution result:Login was successful
In the above example, two print () functions are written in the matching case1: but the break statement is written before the second print function, so the second print The function will not be executed.
The label is a mechanism for specifying the control target of the break statement. It is used in cases where it is necessary to specify the switch statement that is the target of the break statement, such as when the switch statement is nested.
Nesting: In programming terms, *** means a structure in which the same thing is put in a certain thing. *** ***
Let's look at the basic structure!
qiita.rbvar
Label name:switch statement
break label name
Now let's look at an example where a label is needed.
qiita.rbvar
import UIKit
let value = 0 as Any
outerSwitch: switch value{
case let int as Int:
let description: String
switch int {
case 1,3,5,7,9:
description = "Odd"
case 2,4,6,8,10:
description = "Even"
default:
print("Not applicable")//Read here
break outerSwitch
}
print("value is\(description)is")
default:
print("Value is not of type Int")
}
Execution result:Not applicable
In the above example, if the Any type value is an Int type from 1 to 10, it is a program that outputs whether the value is odd or even. Since the specified value is 0, it is output that the value is out of scope.
*** Now, let's change the let value specification to "aaa". *** ***
qiita.rbvar
import UIKit
let value = "aaa" as Any
outerSwitch: switch value{
case let int as Int:
let description: String
switch int {
case 1,3,5,7,9:
description = "Odd"
case 2,4,6,8,10:
description = "Even"
default:
print("Not applicable")
break outerSwitch
}
print("value is\(description)is")
default:
print("Value is not of type Int")//Read here
}
Execution result:Value is not of type Int
The second print function is called because the value specified in this way is not of type Int.
A fallthrough statement is a control syntax that ends the execution of a switch statement case and executes the next case.
qiita.rbvar
let a = 1
switch a{
case 1:
print("Login was successful")
fallthrough
case 2:
print("I failed to login")
default:
print("default")
}
Execution result:
Login was successful
I failed to login
In the above example, the fallthrough statement moves execution to the next case, case2. Therefore, case1 and case2 are output.
Recommended Posts