Hey Marcio,
> On 18 Jan 2015, at 02:22, Marcio Almada <[email protected]> wrote:
>
> Andrea,
>
>> For consistency with list(), we could also just put nothing:
>>
>> foo($bar, , $baz);
>>
>> Which is like:
>>
>> list($bar, , $baz) = $arr;
>>
>> Thoughts?
>
> Not sure. Do we consider both contexts (list assignment skipping and
> parameter skipping) as assignments? If so, then the consistency
> arguments seems very strong to me.
Not really. But, list() is very function-like in syntax, so it’d make sense to
follow its lead for actual functions.
> Only point against the consistency path is that in the context of
> list() the blank identifier is used to discard a value, while on
> parameter skipping the blank identifier inherits a previously declared
> value.
Yes, I suppose that’s a fair point.
Though if you were to implement a list() clone as a function (purely for the
sake of example, you wouldn’t *actually* want to do this), you might actually
do something similar:
function listLike(&$a = 0, &$b = 0, &$c = 0, array $arr) {
if ($a !== 0) {
$a = $arr[0];
}
if ($b !== 0) {
$b = $arr[1];
}
if ($c !== 0) {
$c = $arr[2];
}
}
listLike($bar, 0, $baz, $arr);
list()’s value skipping is a little bit like function argument skipping, in
that way, right?
With this list()-like default value syntax, it’d even work the same:
listLike($bar, , $baz, $arr);
…that probably made no sense. But I think there’s a case to be made that since
list() follows this syntax, we should for function calls to.
By the way, while I was opposed to this RFC before, I am seeing its value
somewhat when using badly-designed APIs like json_decode. That said, I’m still
not sure I like the RFC concept… better to make new, improved APIs than add
kludges to make bad APIs more usable.
--
Andrea Faulds
http://ajf.me/
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php