[swift-evolution] Computed properties: get and set using shorthand notation?

Chris Liscio chris at supermegaultragroovy.com
Fri Feb 5 07:55:16 CST 2016


Jessy,

> On Feb 3, 2016, at 5:08 PM, Jessy Catterwaul <mr.jessy at gmail.com> wrote:
> 
> +1 on implicit return

Yay!

> -1 on $0; I like newValue more than it.

Well, my problem with newValue is the lack of consistency with everywhere else. If we’re not specifying names, then $0 feels “more like the rest of the language” than newValue does.

If you preferred to use newValue (or any other name), you could still do:

class Façade {
  private var _wrapped: Something

  var wrappedProperty: Int {
    get { _wrapped.property }
    set(newValue) { _wrapped.property = newValue }
  }

  var multipliedProperty: Int { _wrapped.property * 42 }
}

So it wouldn’t really stomp on anything too valuable IMO.

> I also think the return type should be implicit.

An implicit return type could certainly be nice as well.

Chris

> 
>> On Feb 3, 2016, at 5:00 PM, Chris Liscio via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>> Why can’t we use shorthand argument names and implicit returns when specifying the get and set blocks in a computed property? I.e., Why must we refer to newValue in the implementation of set, and not $0 like we do in closures? Also, why do we need ‘return’?
>> 
>> Once you get used to the shorthand, you kinda want to use it all over…
>> 
>> This question came up recently when I was writing a façade for another class, and would have liked to written something like the following:
>> 
>> class Façade {
>>   private var _wrapped: Something
>> 
>>   var wrappedProperty: Int {
>>     get { _wrapped.property }
>>     set { _wrapped.property = $0 }
>>   }
>> 
>>   var multipliedProperty: Int { _wrapped.property * 42 }
>> }
>> 
>> I apologize if this has already been discussed/requested before. I searched the archives and didn’t turn up anything that referred to this specifically.
>> 
>> Thanks!
>> 
>> Chris Liscio
>> http://supermegaultragroovy.com <http://supermegaultragroovy.com/>
>> Learn _your_ music with Capo: http://capoapp.com <http://capoapp.com/>
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160205/24d0c967/attachment.html>


More information about the swift-evolution mailing list