diff --git a/propgetset.md b/propgetset.md new file mode 100644 index 0000000..6c3397e --- /dev/null +++ b/propgetset.md @@ -0,0 +1,70 @@ +# I'm confused with class `get` `set` and `prop` + +We have 2 places in documentation describing it: + +[A] +[https://imba.io/docs/basic-syntax/classes#computed-properties](https://imba.io/docs/basic-syntax/classes#computed-properties) + +[B] +[https://imba.io/docs/basic-syntax/operators#keywords-set](https://imba.io/docs/basic-syntax/operators#keywords-set) + +__[A]__ describes: + +`get` +> The get syntax binds an object property to a function that will be +> called when that property is looked up + +But there's no bind. If you call `get` the same as property you get into +infinite loop. If you call it differently - like in examples on website +which doesn't support the description clame - +then it works like a regular function and no difference between using +`get` or `def` other than self documenting syntax. + +__1. What's the differenece between `get` and `def`?__ + +`set` +> Using set you can define a function that will be called when there is +> an attempt to set that property. + +Sounds clear but then example doesn't show it and then it's not clear +until you check it. Proper example: + +```coffee +class Rect + sides = 0 + width = 0 + height = 0 + + set sides size + width = size + height = size +``` + +I would expect different behaviour from `set` - method is called on +value change > process value > returns processed value > applies +returned value instead. Probably the thing which is proposed in +undocumented section as `$set` but with not practical syntax. + +__2. I see no consistency between `get` and `set` as set binds on write +and get doesn't bind on lookup.__ + +No `prop` description or usage in any example of Class documentation. + +__[B]__ describes `prop` and use it in examples: + +`prop` +>A prop allows a tag property to be set from the outside + +But you have the same behaviour without keyword prop. + +__3. What's the difference between following?__ +```coffee +class A + prop a = 1 + +# and + +class B + b = 1 +``` +