Is there a way to enforce UFCS?
thebluepandabear
therealbluepandabear at protonmail.com
Wed Jan 4 22:29:00 UTC 2023
On Wednesday, 4 January 2023 at 14:21:46 UTC, bauss wrote:
> On Wednesday, 4 January 2023 at 03:42:28 UTC, thebluepandabear
> wrote:
>> ...
>>
>> My question is: is there a way to enforce UFCS-syntax?
>
> None of your code actually uses UFCS.
>
> This is UFCS:
>
> ```
> class Foo {
> int bar;
> }
>
> void setBar(Foo foo, int value) {
> foo.bar = value;
> }
>
> void main() {
> foo.setBar(100); // UFCS
> setBar(foo, 100); // Non-UFCS (Above expands to this)
> }
> ```
>
> This is not UFCS but just class method calling:
>
> ```
> class Foo {
> int bar;
>
> void setBar(Foo foo, int value) {
> foo.bar = value;
> }
> }
>
> void main() {
> foo.setBar(100); // Not UFCS - just method call to the class
> foo.setBar = 100; // Not UFCS - simply a setter function call
> (equal to the above)
> setBar(foo, 100); // Error
> }
> ```
>
> Also note that @property doesn't really do anything now and
> there's even talk about deprecating it. Althought I personally
> still use it, then it doesn't have much of a function and none
> of your code is affected if you remove it.
Yeah I got mixed up.
I think a good use of `@property` is for code clarity, it makes
it clear which parts of your code should be treated as properties.
More information about the Digitalmars-d-learn
mailing list