G
gabriele renzi
Hi gurus and nubys,
Again here to bother you
Please note that I'm not here to start a flame. I actually want to
understand matz' and dev/core choices, please excuse me if I sound
rude.
This is the supposed behaviour for kwd args:
---
def f(a,b: 2 , **kwd)
p [a,b,kwd]
end
f(1) #=> [1,2,{}]
f(1,b:5) #=>[1,5,{}]
f(1,b:5,c:6) #=>[1,5,{:c=>6}]
---
I wonder:
why we introduce the ':' syntax ?
Why can't we call a kwd arg like
f(1,b=5)
?
I suppose this is to avoid conflicts with normal assignment..
but what's wrong with making go away the assignment in method calling?
?
OTOH, why we have to define kwd args with
f(a,b:2)
instead of
f(a,b=10)
?
if f(a,b:10) cames in default argument with '=' actually become
useless?
I suppose matz refused the current keyword args syntax as it is found
in python.
I just wonder why
(maybe just because we don't have a () operator?)
PS
btw the 'a: c' syntax for hash is really cool.
I always hate to type 'a'=>b or :a=>b.
PPS
I'd love to see : and => unified as
'a=>b is the same that a: b and it works like
hash[a]=b if var a is defined or like hash[:a]=b if a is not already
defined'
but I'm just dreaming,remeber:
when *you* will write *your* language you'll follow *your* POLS.
Too bad matz' logic is so obvious to me most of the time, this keeps
me away from writing MyLang
PPPS
literals, and method argument definition, are actually embedded micro
languages.
It seem normal to me that '{a=>b}' could work differently from 'a = b'
(i.e. look if the var exist and act differently).
Nobody expects a string literal or a regexp literal to work like the
rest of the code.
But we expect this from Arrays and Hashes (and somewy Ranges).
This must mean something.
Possibly that I need more coffe in the morning.
Again here to bother you
Please note that I'm not here to start a flame. I actually want to
understand matz' and dev/core choices, please excuse me if I sound
rude.
This is the supposed behaviour for kwd args:
---
def f(a,b: 2 , **kwd)
p [a,b,kwd]
end
f(1) #=> [1,2,{}]
f(1,b:5) #=>[1,5,{}]
f(1,b:5,c:6) #=>[1,5,{:c=>6}]
---
I wonder:
why we introduce the ':' syntax ?
Why can't we call a kwd arg like
f(1,b=5)
?
I suppose this is to avoid conflicts with normal assignment..
but what's wrong with making go away the assignment in method calling?
?
OTOH, why we have to define kwd args with
f(a,b:2)
instead of
f(a,b=10)
?
if f(a,b:10) cames in default argument with '=' actually become
useless?
I suppose matz refused the current keyword args syntax as it is found
in python.
I just wonder why
(maybe just because we don't have a () operator?)
PS
btw the 'a: c' syntax for hash is really cool.
I always hate to type 'a'=>b or :a=>b.
PPS
I'd love to see : and => unified as
'a=>b is the same that a: b and it works like
hash[a]=b if var a is defined or like hash[:a]=b if a is not already
defined'
but I'm just dreaming,remeber:
when *you* will write *your* language you'll follow *your* POLS.
Too bad matz' logic is so obvious to me most of the time, this keeps
me away from writing MyLang
PPPS
literals, and method argument definition, are actually embedded micro
languages.
It seem normal to me that '{a=>b}' could work differently from 'a = b'
(i.e. look if the var exist and act differently).
Nobody expects a string literal or a regexp literal to work like the
rest of the code.
But we expect this from Arrays and Hashes (and somewy Ranges).
This must mean something.
Possibly that I need more coffe in the morning.