24 November 2020

Run Settings
LanguageSwift
Language Version
Run Command
print("I don't know what day is it, just keep learning!") enum CompassPoint { case north case south case east case west } enum CompassPointNew { case north, south, east, west } // enum harus dimulai dengan PascalCase (huruf kapital) var northCompass = CompassPoint.north northCompass = .east // mengganti dengan nilai lain yang ada pada CompassPoint switch northCompass { case .north: print("Loth of planets have a north") case .south: print("Watch out for penguins") case .east: print("Where the sun rises") case .west: print("Where the skies are blue") default: print("You're at the center of the world") } enum Planet { case merkurius, venus, bumi, mars, jupiter, saturnus } var myPlace = Planet.merkurius switch myPlace { case .bumi: print("Tempat aman bagi manusia") default: print("Not a safe place to stay!") }
enum Beverage: CaseIterable { case coffee, tea, juice, milk } let totalBeverage = Beverage.allCases.count // mengaktifkan CaseIterable, memungkinkan untuk memperhatikan semua kasus print("\(totalBeverage) beverages yang ada") for cases in Beverage.allCases { print(cases) } enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) } var product = Barcode.upc(100,20,49,71) product = qrCode("Dicoding Indonesia") switch product { case .upc(let a, let b, let c, let d): print("UPC: \(a), \(b), \(c), \(d)") case qrcode(let stringCode): print("QRCode: \(stringCode)") } // bisa juga dengan menempatkan annotation var atau let tunggal sbb: switch product { case let .upc(a, b, c, d): print("UPC: \(a), \(b), \(c), \(d)") case let .qrcode(stringCode): print("QRCode: \(stringCode)") }
// kita juga bisa mengisi enum dengan nilai default atau raw values enum characterASCII: Character { case tab = "\t" case newLine = "\n" case returnCarriage = "\r" } enum Planet: Int { case merkurius = 1, venus, bumi, mars, jupiter, saturnus, uranus, neptunus } case CompassPoint: String { case north, east, west, south } // mengakses nilai raw values let nomorBumi = Planet.bumi.rawValue let sunset = CompassPoint.west.rawValue // mengakses dari nilai raw values let somePlanet = Planet(rawValue: 4) print("\(somePlanet)") let posisi = 11 if let cariPlanet = Planet(rawValue: posisi) { switch cariPlanet { case .earth: print("bisa ditinggali") default: print("Not a safe place!") } } else { print("Tidak ada planet dalam tata surya kita di urutan ke: \(posisi)") }
// menambahkan lapisan ke dalam enum dengan indirect dapat dilakukan dengan 2 cara: enum ArithmeticExpression { case number(Int) indirect case addition(arithmeticExpression, arithmeticExpression) indirect case mutiplication(arithmeticExpression, arithmeticExpression) } // dan cara lain: indirect enum ArithmeticExpression { case number(Int) case addition(arithmeticExpression, arithmeticExpression) case mutiplication(arithmeticExpression, arithmeticExpression) } /* yang pertama kita hanya memilih beberapa cases saja, yang ke-2 kita definisikan untuk semua nilai!*/ // contoh: menuliskan (5+4)*2 ke dalam enum yang sudah kita buat let five = ArithmeticExpression.number(5) let four = ArithmeticExpression.number(4) let sumNumber = ArithmeticExpression.addition(five, four) let product = ArithmeticExpression.multiplication(sum, ArithmeticExpression.number(2)) func evaluate(_ expression: ArithmeticExpression) -> Int { switch expression { case let .number(value): return value case let .addition(left, right): return evaluate(left) + evaluate(right) case let .multiplication(left, right): return evaluate(left) * evaluate(right) } } print(evaluate(product))
Editor Settings
Theme
Key bindings
Full width
Lines