- From: Darin Adler <darin@apple.com>
- Date: Mon, 22 Jun 2009 00:24:59 -0700
- To: Simon Pieters <simonp@opera.com>, Cameron McCormack <cam@mcc.id.au>
- Cc: WebApps WG <public-webapps@w3.org>
On Jun 22, 2009, at 12:05 AM, Simon Pieters wrote:
> On Mon, 22 Jun 2009 02:53:22 +0200, Cameron McCormack
> <cam@mcc.id.au> wrote:
>
>> Does anyone have an opinion on which way this should be specified
>> in Web
>> IDL? Assuming this interface:
>>
>> interface A {
>> /* f1 */ void f(in DOMString a);
>> /* f2 */ void f(in DOMString a, in float b);
>> /* f3 */ void f(in DOMString a, in float b, in float c, in float
>> d);
>> };
>>
>> option 1 would be to have:
>>
>> a.f() be like calling f1 with (undefined)
>> a.f('a') be like calling f1 with ('a')
>> a.f('a', 1) be like calling f2 with ('a', 1)
>> a.f('a', 2, 3) be like calling f3 with ('a', 2, 3, undefined)
>> a.f('a', 2, 3, 4, 5) be like calling f3 with ('a', 2, 3, 4)
>>
>> and option 2 would be to have:
>>
>> a.f() throw an exception
>> a.f('a') be like calling f1 with ('a')
>> a.f('a', 1) be like calling f2 with ('a', 1)
>> a.f('a', 2, 3) throw an exception
>> a.f('a', 2, 3, 4, 5) be like calling f3 with ('a', 2, 3, 4)
>>
>> Web IDL currently says to throw on any incorrect number of arguments,
>> so it seems that it should change to be one of the above two options.
>
> I think I prefer option 2. It's easier for authors to find their
> mistake. If a spec author wants the behavior of option 1, then
> that's possible with [Optional].
I prefer option 1 because it is closer to the behavior of the built-in
functions in the JavaScript language.
-- Darin
Received on Monday, 22 June 2009 07:25:41 UTC