function argument 'shorthand'
Dave
Dave_member at pathlink.com
Mon May 22 14:57:47 PDT 2006
James Dunne wrote:
> Derek Parnell wrote:
>> On Sat, 20 May 2006 15:00:29 +1000, Dave <Dave_member at pathlink.com>
>> wrote:
>>
>>>
>>> Couldn't find this in the archive, so I don't know if it's been
>>> discussed
>>> before.
>>>
>>> One of the things I like about Pascal is that you can specify
>>> function arguments
>>> of the same type w/o repeating the type. So, in D we could:
>>>
>>> int foo(int x, y, z) // y and z are type int
>>> {}
>>>
>>> int bar(int x = 1, y = 2, z = 3) // y and z are type int
>>> {}
>>>
>>> void baz(int x, y, double d, f = 3.14159) // y is an int, f is a double
>>> {}
>>>
>>> Thoughts?
>>
>>
>> It's not a good idea because it makes things too easy for coders to
>> write mistakes. Maybe a compromise that makes it explicit that the
>> coder is taking shortcuts?...
>>
>> int foo (int {x,y,z} )
>> void baz(int {x,y}, double {d. f=3.14159})
>>
>>
>
> Pascal syntax:
>
> function foo(x,y,z : int) : int
> procedure baz(x,y : int, d, f : double = 3.14159)
>
I didn't want to take it that far :). Just far enough that "following
params." are implicitly typed. The reason that feels natural to me is
because I've gotten used to declaring local vars. that way, so I end up
doing that for function params. and end-up having to back-track (more
often than I'd like) <g>
> I've always liked it, since it flows naturally while typing a
> declaration. You don't naturally think of the type before the parameter
> name (unless you're conditioned to do so). That, and it makes
> templating code much easier to read/write since you've got that leading
> function/procedure keyword to introduce more syntax with:
>
> function(T) foo(x,y,z : T) : T {
> return x + y + z;
> }
>
More information about the Digitalmars-d
mailing list