Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Local variables in lambda
list. rb
10/29/2008 12:25:00 PM
Hi. Is there a way to create a lambda that references local variables
not yet defined ( with out pawing them to the prod) ?
I.e.
x = lambda {a+b}
a = 1
b = 2
c = x.call
Thank you
1 Answer
Brian Candler
10/29/2008 12:37:00 PM
0
List Rb wrote:
> Hi. Is there a way to create a lambda that references local variables
> not yet defined ( with out pawing them to the prod) ?
>
> I.e.
> x = lambda {a+b}
> a = 1
> b = 2
> c = x.call
I don't know what "pawing them to the prod" means, but you can do
a, b = nil, nil
x = lambda {a+b}
a = 1
b = 2
c = x.call
This is because Ruby makes a parse-time decision as to whether 'a' is a
local variable or a method call. If no assignment to 'a' has been seen
earlier in the scope, then it is interpreted as a method call instead:
self.a()
Since this is done while the parse tree is built, prior to execution, it
doesn't make any difference whether the assignment is actually executed
or not. For example:
def x
"hello"
end
if false
x = 1
end
puts x # shows 'nil' since x is a local variable
This is necessary to have any sort of efficiency. Otherwise, a simple
statement like "b = a + 1" inside a loop would have to decide at
run-time, every time it is executed, whether 'a' is a local variable or
a method.
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Local variables in lambda
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password