1 /** 2 Allows declaring non-optional `Int` field without assigning an initial value. 3 */ 4 public extension Field where Type == Int { 5 convenience init(wrappedValue: Type = 0) { 6 self.init(wrappedValue: wrappedValue, []) 7 } 8 9 convenience init(wrappedValue: Type = 0, _ options: FieldOption...) { 10 self.init(wrappedValue: wrappedValue, options) 11 } 12 } 13 14 /** 15 Allows declaring non-optional `Double` field without assigning an initial value. 16 */ 17 public extension Field where Type == Double { 18 convenience init(wrappedValue: Type = 0.0) { 19 self.init(wrappedValue: wrappedValue, []) 20 } 21 22 convenience init(wrappedValue: Type = 0.0, _ options: FieldOption...) { 23 self.init(wrappedValue: wrappedValue, options) 24 } 25 } 26 27 /** 28 Allows declaring non-optional `Bool` field without assigning an initial value. 29 */ 30 public extension Field where Type == Bool { 31 convenience init(wrappedValue: Type = false) { 32 self.init(wrappedValue: wrappedValue, []) 33 } 34 35 convenience init(wrappedValue: Type = false, _ options: FieldOption...) { 36 self.init(wrappedValue: wrappedValue, options) 37 } 38 } 39 40 /** 41 Allows declaring non-optional `String` field without assigning an initial value. 42 */ 43 public extension Field where Type == String { 44 convenience init(wrappedValue: Type = "") { 45 self.init(wrappedValue: wrappedValue, []) 46 } 47 48 convenience init(wrappedValue: Type = "", _ options: FieldOption...) { 49 self.init(wrappedValue: wrappedValue, options) 50 } 51 } 52 53 /** 54 Allows declaring non-optional array field without assigning an initial value. 55 */ 56 public extension Field where Type: ExpressibleByArrayLiteral { 57 convenience init(wrappedValue: Type = []) { 58 self.init(wrappedValue: wrappedValue, []) 59 } 60 61 convenience init(wrappedValue: Type = [], _ options: FieldOption...) { 62 self.init(wrappedValue: wrappedValue, options) 63 } 64 } 65 66 /** 67 Allows declaring non-optional dictionary field without assigning an initial value. 68 */ 69 public extension Field where Type: ExpressibleByDictionaryLiteral { 70 convenience init(wrappedValue: Type = [:]) { 71 self.init(wrappedValue: wrappedValue, []) 72 } 73 74 convenience init(wrappedValue: Type = [:], _ options: FieldOption...) { 75 self.init(wrappedValue: wrappedValue, options) 76 } 77 } 78 79 /** 80 Allows declaring non-optional record field without assigning an initial value. 81 */ 82 public extension Field where Type: Record { 83 convenience init(wrappedValue: Type = Type.init()) { 84 self.init(wrappedValue: wrappedValue, []) 85 } 86 87 convenience init(wrappedValue: Type = Type.init(), _ options: FieldOption...) { 88 self.init(wrappedValue: wrappedValue, options) 89 } 90 } 91