On Tuesday, 20 December 2022 at 01:26:15 UTC+11 Bram Moolenaar wrote:

>
> > I'm not a big fan of the "this" keyword. I agree if going to use it, 
> > ensure to use it everywhere. Consistency is good. I like simplicity, and 
> > dislike redundancy. 
>
> What do you mean, do you prefer "self"?
>

No, I prefer 'this' over 'self'.   I was considering if its possible to go 
without any keyword for it.   For example, these days we also have syntax 
highlighting which can give a different color for member variables and 
arguments.
 

> > So, about "this", alternatively, don't use it anywhere, but maybe you 
> > could throw an error if a function argument name is also member variable 
> > name. 
>
> That is actually very common. It is very likely that methods pass 
> arguments to set or modify the object members, thus using the same name 
> is very likely to happen.


Yes, it is common, and it is a source of confusion & errors - especially 
when its not referring to the same thing.  Thats my point.  It seems like 
it would be better practice to use different names for different context, 
especially when those contexts overlap in scope.
 

> > OR, perhaps another option, just thinking outside the box, if a function 
> > argument does actually happen to match a member variable name - then 
> > automatically force it to actually set that variable. When (if) this 
> > becomes the expected behavior, I think it would enable simplifying some 
> > things a lot. 
>
> Boundary checks are often done on arguments, assuming that the argument 
> is always assigned to an object member is too limiting.
>

To be clear, I didn't mean that every argument is always assigned to an 
object member, I only meant assign it when it has the same name...  I think 
you understood anyay, but just in case I was ambiguous.

But, yes, I see that it could be restrictive.  Still, really, if you are 
using the same name to mean something different, then that is also a 
potential pitfall.
 
 

> I also want to avoid doing things very differently from what existing 
> languages are doing. Some different syntax and rules can be acceptable, 
> but introducing new mechanisms that are hard to understand are to be 
> avoided.
>

It is unusual, I agree.  I've never seen it done like that in any modern 
major language.  It reminds me of some languages that don't really use 
scope very well, where ALL of the variable names were pretty much scoped to 
the whole class, no matter where they were declared in that class.  I can't 
recall what language I saw that in, that was over 20 years ago.  
 

> > class Blahh 
> > this.toX: TYPE_A 
> > this.toY: TYPE_B 
> > fn SetXandY(toX: TPYE_A, toY: TYPE_B ) 
> > this.toX = toX 
> > this.toY = toY 
> > enfunc 
> > endclass 
> > 
> > So, I find that pattern happens a lot. And it gets real tedious. I 
> > think this could be simplified to the following; 
> > 
> > class Blahh 
> > toX: TYPE_A 
> > toY: TYPE_B 
> > fn SetXandY(toX, toY) 
> > enfunc 
> > endclass 
> > 
> > ie. This would set the member variables, toX and toY automatically. 
>
> I don't know any language that does this and I find it very obscure and 
> confusing. Also, it makes giving useful errors difficult. Using an 
> argument name that happens to be a member name would not result in any 
> error but silently turned into an assignment.


Yeah, it could be confusing to get used to it.  But, there would not need 
to be any error messages, because it wouldn't be an error. It would be a 
feature.  And, once you got used to it, you'd realise it solves a number of 
problems.

I take your point though.  Considering it would behave different to current 
paradigm of most popular languages, then users would get surprised that 
they didn't get an error - because they were expecting something different 
to happen.

But, at the end of the day, "this" is a pragmatic choice, and I like your 
idea of enforcing it everywhere such member variables are used. 



-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/a5d88361-2326-4f36-9e68-ac50fd03b8f0n%40googlegroups.com.

Raspunde prin e-mail lui