tom.x.purl | 16 Jul 20:12

[groovy-user] Script-Level Variable Scope - Is This Possible?


I'm writing a Groovy script that doesn't contain any classes.  It's a true "script".  Here's a simplified version of what it looks like:

void needMap1(map) {
    println map["propOne"]
}

void needMap2(map) {
    println map["propTwo"]
}

// gather map values from the command-line, property files, and console interface
def map = ["propOne": "1", "propTwo": "2"]
needMap1(map)
needMap2(map)


Every function in the script needs access to the map, and the only way I've found that I can make the map variable available is to pass it to each function.  This works, it seems like there must be an easier, cleaner way to do this that requires less parameter maintenance.  Is there a better way to do this?

Thanks in advance!

Tom Purl

This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission may contain information that is privileged, confidential, legally privileged, and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmissio n in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to http://www.jpmorgan.com/pages/disclosures for disclosures relating to UK legal entities.

Guillaume Laforge | 16 Jul 20:29

Re: [groovy-user] Script-Level Variable Scope - Is This Possible?

In the case of a script, you may "undef" your map to make it go into
the script's binding instead of being a local variable which is
invisible to your methods:

void needMap1() {
    println map["propOne"]
}

void needMap2() {
    println map["propTwo"]
}

// gather map values from the command-line, property files, and
console interface
map = ["propOne": "1", "propTwo": "2"]
needMap1()
needMap2()

On Wed, Jul 16, 2008 at 8:14 PM,  <tom.x.purl@...> wrote:
>
> I'm writing a Groovy script that doesn't contain any classes.  It's a true
> "script".  Here's a simplified version of what it looks like:
>
> void needMap1(map) {
>     println map["propOne"]
> }
>
> void needMap2(map) {
>     println map["propTwo"]
> }
>
> // gather map values from the command-line, property files, and console
> interface
> def map = ["propOne": "1", "propTwo": "2"]
> needMap1(map)
> needMap2(map)
>
>
> Every function in the script needs access to the map, and the only way I've
> found that I can make the map variable available is to pass it to each
> function.  This works, it seems like there must be an easier, cleaner way to
> do this that requires less parameter maintenance.  Is there a better way to
> do this?
>
> Thanks in advance!
>
> Tom Purl
>
> ________________________________
>
> This communication is for informational purposes only. It is not intended as
> an offer or solicitation for the purchase or sale of any financial
> instrument or as an official confirmation of any transaction. All market
> prices, data and other information are not warranted as to completeness or
> accuracy and are subject to change without notice. Any comments or
> statements made herein do not necessarily reflect those of JPMorgan Chase &
> Co., its subsidiaries and affiliates. This transmission may contain
> information that is privileged, confidential, legally privileged, and/or
> exempt from disclosure under applicable law. If you are not the intended
> recipient, you are hereby notified that any disclosure, copying,
> distribution, or use of the information contained herein (including any
> reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any
> attachments are believed to be free of any virus or other defect that might
> affect any computer system into which it is received and opened, it is the
> responsibility of the recipient to ensure that it is virus free and no
> responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and
> affiliates, as applicable, for any loss or damage arising in any way from
> its use. If you received this transmission in error, please immediately
> contact the sender and destroy the material in its entirety, whether in
> electronic or hard copy format. Thank you. Please refer to
> http://www.jpmorgan.com/pages/disclosures for disclosures relating to UK
> legal entities.

--

-- 
Guillaume Laforge
Groovy Project Manager
G2One, Inc. Vice-President Technology
http://www.g2one.com

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

Tom Purl | 17 Jul 03:58

Re: [groovy-user] Script-Level Variable Scope - Is This Possible?

Thanks a *ton* Guillaume!  That did the trick.

On Wed, Jul 16, 2008 at 1:29 PM, Guillaume Laforge
<glaforge@...> wrote:
> In the case of a script, you may "undef" your map to make it go into
> the script's binding instead of being a local variable which is
> invisible to your methods:
>
> void needMap1() {
>    println map["propOne"]
> }
>
> void needMap2() {
>    println map["propTwo"]
> }
>
> // gather map values from the command-line, property files, and
> console interface
> map = ["propOne": "1", "propTwo": "2"]
> needMap1()
> needMap2()

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Gmane