enum Day: Int {
case sun = 1, mon, tue,
wed, thu, fri, sat
}
ʲDay.swiftʳ
ʲBarcode.swiftʳ
enum Barcode {
case upc(Int, Int, Int, Int)
case qrCode(String)
}
ʲswiftc -print-ast Day.swiftʳ
internal enum Day : Int {
case sun, mon, tue, wed, thu, fri, sat
internal typealias RawValue = Int
internal var hashValue: Int { get }
internal init?(rawValue: Int)
internal var rawValue: Int { get }
}
Slide 11
Slide 11 text
Associated Valuesڧ͍ʁ
Slide 12
Slide 12 text
ʲBarcode.swiftʳ
enum Barcode {
case upc(Int, Int, Int, Int)
case qrCode(String)
}
Slide 13
Slide 13 text
ʲBarcode.swiftʳ
enum Barcode {
case upc(Int, Int, Int, Int)
case qrCode(String)
}
ੵ
ੵ
Slide 14
Slide 14 text
indirect enum List {
case cons(T, List)
case `nil`
}
ʲList.swiftʳ
sealed abstract class Option[+A] {
ུ
}
final case class Some[+A](value: A) extends Option[A] {
ུ
}
case object None extends Option[Nothing] {
ུ
}
ʲsrc/library/scala/Option.scalaʳ※Ұ෦লུ
Slide 24
Slide 24 text
sealed abstract class Option[+A] {
ུ
}
final case class Some[+A](value: A) extends Option[A] {
ུ
}
case object None extends Option[Nothing] {
ུ
}
ʲsrc/library/scala/Option.scalaʳ※Ұ෦লུ
class Animal {}
class Cat: Animal {}
let cat0: Optional = .some(Cat())
let animal0: Optional = cat0
enum MyOptional {
case some(T)
case none
}
let cat1: MyOptional = .some(Cat())
let animal1: MyOptional = cat1
Slide 27
Slide 27 text
class Animal {}
class Cat: Animal {}
let cat0: Optional = .some(Cat())
let animal0: Optional = cat0
enum MyOptional {
case some(T)
case none
}
let cat1: MyOptional = .some(Cat())
let animal1: MyOptional = cat1
cannot convert value of type 'MyOptional' to specified type 'MyOptional'
ࢀߟจݙ
The Swift Programming Language (Swift 4.1): Enumerations
RawRepresentable - Swift Standard Library | Apple Developer Documentation
SwiftͷOptionalͨͩͷenum? - Qiita
SwiftͷArray͕ϛϡʔλϒϧͰCovariantͳཧ༝ - Qiita
Slide 30
Slide 30 text
ࢀߟจݙ
Chapter 6. Variants / Real World OCaml
ιϑτΣΞٕ๏: No.6 (ੵܕͱతσʔλܕ)
C ྻڍମͷએݴ
ྻڍܕ [C++]
ྻڍܕ (C# ϓϩάϥϛϯά ΨΠυ) | Microsoft Docs
Enum Classes - Kotlin Programming Language
Effective Scala
ྻڍܕ (enum) ͕ཉ͍͠ͱ͖ͷ Enumeration ͱ case object... - tnoda-scala
ܕύϥϝʔλͱมҐࢦఆ · ScalaݚमςΩετ