Re: Defining a global variable

2020-10-21 Thread MG

Hi Merlin,

I don't know how your reply pertains to what I said, but generally 
speaking having implicit variables is imho generally a very poor design 
choice, as anyone who has experienced them in e.g. a Basic dialect will 
be able to confirm, simply because one innocuous typo can introduce a 
hard to track bug into your code, by implicitly defining a new variable 
instead of modifying an existing one.


Cheers,
mg


On 21/10/2020 17:46, Merlin Beedell wrote:

I thought that implicit variables would overcome this.  Not an elegant solution 
- as you are simply declaring variables on the fly without an explicit data 
type or even a 'def'.
Having said, it is generally safer to explicitly list the parameters used in a 
method when used in this context (e.g. in a script without an explicit class 
declaration to mop up this case).
And as for 'global' - I sure wish the word 'global' was used instead of 
'static'.  It just kinda makes more sense to me!
//===
test=''  //implicit declaration of a variable
void func()
{
   println(test)
}
test = 'hello'
func()
//===

Or just

//===
void func()
{
   println(test)
}
test = 'hello'
func()
//===

Merlin Beedell
-Original Message-
From: MG 
Sent: 15 October 2020 6:21 PM
To: users@groovy.apache.org; Jochen Theodorou 
Subject: Re: Defining a global variable

On 15/10/2020 18:27, Jochen Theodorou wrote:

well.. even scripts are first compiled into a class before the class
is then executed. Groovy has no interpreter

Which, I think, is a lesser known fact, and quite surprising to people who perceive 
Groovy just under its "script language" aspect ;-)






RE: Defining a global variable

2020-10-21 Thread Merlin Beedell
I thought that implicit variables would overcome this.  Not an elegant solution 
- as you are simply declaring variables on the fly without an explicit data 
type or even a 'def'.
Having said, it is generally safer to explicitly list the parameters used in a 
method when used in this context (e.g. in a script without an explicit class 
declaration to mop up this case).
And as for 'global' - I sure wish the word 'global' was used instead of 
'static'.  It just kinda makes more sense to me!
//===
   test=''  //implicit declaration of a variable
   void func()
   {
  println(test)
   }
   test = 'hello'
   func()
//===

Or just

//===
   void func()
   {
  println(test)
   }
   test = 'hello'
   func()  
//===

Merlin Beedell 
-Original Message-
From: MG  
Sent: 15 October 2020 6:21 PM
To: users@groovy.apache.org; Jochen Theodorou 
Subject: Re: Defining a global variable

On 15/10/2020 18:27, Jochen Theodorou wrote:
> well.. even scripts are first compiled into a class before the class 
> is then executed. Groovy has no interpreter

Which, I think, is a lesser known fact, and quite surprising to people who 
perceive Groovy just under its "script language" aspect ;-)