[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-bash] make function local
From: |
Linda Walsh |
Subject: |
Re: [Help-bash] make function local |
Date: |
Fri, 17 Apr 2015 13:50:28 -0700 |
User-agent: |
Thunderbird |
Greg Wooledge wrote:
The problem is, ALL function definitions (and un-definitions) are global.
---
yeah...
If there was a "func" defined at the global scope, you've obliterated it.
I don't understand why you don't understand this.
---
I don't understand why you think I don't understand this.
I showed an example where I wanted to use a local function in
a stand-alone script -- there were no libraries involved. There was
no previous definition. The function was deleted if it was called
once. No other interactions were specified.
I don't get why you toss in all sorts of other possible interactions
that I didn't specify nor that existed. Sure, if I pull the plug from
the wall all of your examples on your website won't work. So should
I question your examples because they don't work under all possible
circumstances? That's ridiculous.
Doing trickery to make it LOOK LIKE you have a local function just leads
to confusion. The person who inherits this script from you after you're
gone may think the function is local, when it isn't.
---
I'm quite clear about how I use "throw-away" functions.
So, what is the point of doing this convoluted trickery, when it
accomplishes nothing (it doesn't create a local function, and it doesn't
prevent contamination of the global function namespace)? Just to
see how "clever" you can be?
---
No, as an example where a local function would be of use --
and the "clever trickery" (I said it as a "trite example") involved.
If I wanted clever trickery, I'd use a function generator
that generated function names with a GUID ending -- then test if that
exists and repeat if there is a collision. That would be more my idea
of clever trickery, since "Guids" are considered to be "Globally Unique"
(even though they really aren't), it would be as solid as a true local
functions as much as GUIDS are really globally unique -- sorta something
like:
sub uuid_name {
my uuid=$(uuidgen)
echo "${uuid//-/_}"
}
sub filterarray {
my arrayname=${1:?}
my filter=${2:?}
my t=$(type -t "$filter")
if [[ $t!=function && $t!=alias ]]; then
my uname="F_$(uuid_name)"
eval "sub $uname { $filter }"
fi
}
---
Would be more my idea of "clever trickery" -- and would be just
as globally unique as GUID's are taken to be (regen GUID's until
you find one that doesn't collide (note the above code doesn't
loop on a test, but was a random scriplet written a year ago
to capture the idea of wrapping some 'filter' code in a sub
if it wasn't already an alias or a sub.
Of course, I'm sure you already thought of creating function
names on the fly using GUID's to ensure they don't collide
globally, tricky guy that you are... ;-)
Re: [Help-bash] make function local, Linda Walsh, 2015/04/17
Re: [Help-bash] make function local, Eduardo A . Bustamante López, 2015/04/17
Re: [Help-bash] make function local, Linda Walsh, 2015/04/17
Re: [Help-bash] make function local, Greg Wooledge, 2015/04/17
Re: [Help-bash] make function local,
Linda Walsh <=
Re: [Help-bash] make function local, Eduardo A . Bustamante López, 2015/04/17
Re: [Help-bash] make function local, Linda Walsh, 2015/04/17
Re: [Help-bash] make function local, Eduardo A . Bustamante López, 2015/04/17
Re: [Help-bash] make function local, Chet Ramey, 2015/04/19
Re: [Help-bash] make function local, Peng Yu, 2015/04/19
Re: [Help-bash] make function local, Chet Ramey, 2015/04/20
Re: [Help-bash] make function local, Peng Yu, 2015/04/20
Re: [Help-bash] make function local, Greg Wooledge, 2015/04/20
Re: [Help-bash] make function local, Chet Ramey, 2015/04/20