[O] Implement obj.apply {} like Kotlin
This commit is contained in:
@@ -56,8 +56,11 @@ class AlarmActivator: UITabBarController
|
|||||||
guard let alarm = alarms.listActivating.first else { return }
|
guard let alarm = alarms.listActivating.first else { return }
|
||||||
|
|
||||||
// Update alarm info
|
// Update alarm info
|
||||||
alarm.lastActivate = Date()
|
alarm.apply {
|
||||||
if alarm.oneTime { alarm.enabled = false }
|
$0.lastActivate = Date()
|
||||||
|
if $0.oneTime { $0.enabled = false }
|
||||||
|
}
|
||||||
|
|
||||||
alarms.localSave()
|
alarms.localSave()
|
||||||
|
|
||||||
// Segue
|
// Segue
|
||||||
|
|||||||
@@ -100,13 +100,13 @@ class Alarms: Codable
|
|||||||
var list: [Alarm] = []
|
var list: [Alarm] = []
|
||||||
|
|
||||||
/// Save alarms to local storage
|
/// Save alarms to local storage
|
||||||
func localSave() -> Alarms { localStorage.setValue(JSON.stringify(list)!, forKey: "alarms"); return self }
|
func localSave() { localStorage.setValue(JSON.stringify(list)!, forKey: "alarms") }
|
||||||
|
|
||||||
/// Read alarms from local storage
|
/// Read alarms from local storage
|
||||||
func localRead() -> Alarms { list = JSON.parse([Alarm].self, localStorage.string(forKey: "alarms")!)!; return self }
|
func localRead() { list = JSON.parse([Alarm].self, localStorage.string(forKey: "alarms")!)! }
|
||||||
|
|
||||||
/// Read an alarm object from local storage
|
/// Read an alarm object from local storage
|
||||||
static func fromLocal() -> Alarms { return Alarms().localRead() }
|
static func fromLocal() -> Alarms { return Alarms().apply { $0.localRead() } }
|
||||||
|
|
||||||
/// Get enabled alarms
|
/// Get enabled alarms
|
||||||
var listEnabled: [Alarm] { return list.filter { $0.enabled } }
|
var listEnabled: [Alarm] { return list.filter { $0.enabled } }
|
||||||
|
|||||||
@@ -77,3 +77,17 @@ extension TimeInterval
|
|||||||
else { return "\(seconds)s" }
|
else { return "\(seconds)s" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Apply like Kotlin
|
||||||
|
protocol HasApply {}
|
||||||
|
extension HasApply
|
||||||
|
{
|
||||||
|
@discardableResult
|
||||||
|
func apply(_ c: (Self) -> ()) -> Self
|
||||||
|
{
|
||||||
|
c(self)
|
||||||
|
return self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
extension Alarm: HasApply {}
|
||||||
|
extension Alarms: HasApply {}
|
||||||
|
|||||||
Reference in New Issue
Block a user