vardır ?? : Bir uzantı kullanarak
infix operator <-?? { associativity right precedence 90 assignment }
func <-??<T>(inout variable:T, value:T?)
{ if value != nil { variable = value! } }
object.nonOptionalProperty <-?? funcThatReturnsOptional()
: bir operatör kullanarak
func setNotNil<T>(inout variable:T, _ value:T?)
{ if value != nil { variable = value! } }
setNotNil(&object.nonOptionalProperty, funcThatReturnsOptional())
:
object.nonOptionalProperty = funcThatReturnsOptional() ?? object.nonOptionalProperty
bir fonksiyonunu kullanarak
extension Equatable
{ mutating func setNotNil(value:Self?) { if value != nil { self = value! } } }
object.nonOptionalProperty.setNotNil(funcThatReturnsOptional())
peki tamam bu aslında bir satırdır ama gerçekten korkunç görünüyor: D daha iyi okunabilir bir çözüm olduğunu düşündüm (belki bir şey ??? operatör ile) – Ch1llb4y
@ Ch1llb4y: Böyle bir çözüm bilmiyorum. Özel bir görev operatörü tanımlayabilirsiniz. Sorun, operatör işlevinde yeni bir değer atamasanız bile giriş parametrelerinin özellik dizisini tetiklemesidir. –