Marek Piasecki
2 years ago
1 changed files with 70 additions and 0 deletions
@ -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…
Reference in new issue