> 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.

In order to give different colors for member variables and function 
arguments you need a very sophisticated parser. Otherwise you cannot 
distinguish the two in code. For the same reason C++ developers often 
prefix member variables with `m_`, like `m_age`, others use a postfix 
underscore like `age_` etc. I don't like it because it's not consistent.

Personally, I would prefer `this` (or `self` etc.) for member variables. It 
makes the syntax script a lot simpler and the syntax highlighting will work 
100%. It will also be easier to `:grep` for all usages of a member variable 
since every reference of a member variable will contain `this`.
On Monday, December 19, 2022 at 4:12:37 PM UTC+1 ch...@createng.com wrote:

> 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/12c8dafa-214d-4ce4-93e3-a36c59b94784n%40googlegroups.com.

Raspunde prin e-mail lui