You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi, thanks for your work on this interesting proposal. Would be possible to initialize a protocol field by accessing this, or would that need to be a method? E.g.:
protocolPageable{pageSizeitemsgetFirstPage(){returnthis[Pageable.items].slice(0,this[Pageable.pageSize])}}classGroceryList{constructor(items){this.items=items}implementsprotocolPageable{pageSize=2items=this.items// <-- Would this be legal?getitems(){returnthis.items}// <-- Or this?items(){returnthis.items}// <-- Or would this be the only way to go?}}
The text was updated successfully, but these errors were encountered:
Protocols are contracts (or rather behaviors) applied to types so any object of a type automatically observes the contract. They're not applied to existing objects. You can create reified instances of a protocol, but that's a separate concern. I know it's all a matter of implementation/choice, but I implemented protocols as solely functions/methods (command or query), not properties, following after what Clojure did.
I would think rather your types implement the properties (and their defaults) apart from the protocol and the protocol methods simply make use of those properties. The properties, if absolutely necessary, would rather become part of an interface (see TypeScript's). And, for what it's worth, although similar, protocols and interfaces are not the same thing.
Hi, thanks for your work on this interesting proposal. Would be possible to initialize a protocol field by accessing
this
, or would that need to be a method? E.g.:The text was updated successfully, but these errors were encountered: