Online Swift Playground
//enumeration - value type
import Foundation
enum Week: String {
case monday = "first"
case tuesday = "second"
case wednesday = "third"
case thursday = "forth"
case friday = "fifth"
case saturday = "sixth"
case sunday = "seventh"
var weekPart: String {
switch self{
case .monday, .tuesday, .wednesday, .thursday, .friday:
return "workday \(rawValue) day"
case .saturday, .sunday:
return "weekend \(rawValue) day"
}
}
}
enum Workdays: Int, CaseIterable {
case monday = 1, tuesday, wednesday, thursday, friday
var daysUntilWeekend: Int {
return 5 - self.rawValue
}
static func daysUntilWeekend(day: Self) -> Int{
return 5 - day.rawValue
}
}
func weekPart(for day: Week) -> String {
switch day{
case .monday, .tuesday, .wednesday, .thursday, .friday:
return "workday"
case .saturday, .sunday:
return "weekend"
}
}
print(Week.monday)
print(Week.friday.rawValue)
print(Week(rawValue: "fifth")!)
print(Workdays.friday.rawValue)
print(Workdays.thursday.daysUntilWeekend)
print(Workdays.daysUntilWeekend(day: Workdays.thursday))
print(weekPart(for: Week.monday))
print(Week.sunday.weekPart)
for day in Workdays.allCases{
print(day)
}
//Result
enum intResult {
case OK(_: Int)
case Err(_: String)
}
func check(num: Int) -> intResult{
if num <= 10 {
return .OK(num)
}else{
return .Err("error message")
}
}
let result = check(num: 5)
switch result {
case .OK(let num):
print(num)
case .Err(let message):
print(message)
}
func check2(res: intResult) -> Int{
guard case .OK(let num) = res else { fatalError("error")}
return num
}
print(check2(res: result))
//init
enum initCase{
case on, off
init(){
self = .off
}
}
var e1 = initCase()
print(e1)
e1 = initCase.on
print(e1)
enum noCase{
static func hi(){
print("no instance!")
}
}
//var e2 = noCase() //error
noCase.hi()
//Optional
enum intOpt {
case Some(_: Int)
case None(_: Void)
}
var o1 = intOpt.Some(5)
print(o1)
o1 = intOpt.None(())
print(o1)
switch o1 {
case .Some(let x):
print(x)
case .None(()):
print("nil")
}
Комментариев нет:
Отправить комментарий