Browse Source

some questions about syntax

master
Marek Piasecki 1 year ago
parent
commit
26f17848b4
  1. 70
      propgetset.md

70
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
```
Loading…
Cancel
Save