> Even after reading your message twice, I can't think of an example where
> this would be useful. Obviously, I don't understand your intention.
The original poster wants to add syntax for keyword arguments. Keyword arguments can be found in quite some languages (Python, Common Lisp, ...), they allow you to bind a parameter by name instead of by position (similar to using an array vs. a hash).
> Could you give an example of a construction that is made possible by > this feature (and thus would otherwise be impossible)? Surely we aren't dealing with Turing completeness here, are we?
Consider the following constructor:
class Window: def __init__(title, x=USE_DEFAULT, y=USE_DEFAULT, width=USE_DEFAULT, height=USE_DEFAULT, parent=None): pass
And contrast:
window = Window(title='Hello World', width=640, height=480)
with:
window = Window('Hello World', USE_DEFAULT, USE_DEFEAULT, 640, 480)
Cheers, Michael
Bert
Daniel Crookston wrote:
It looks like the last time this was discussed was October of 2003, over the course of about five emails. I don't see anything in the archives about it since then. Here's what I'd like to suggest.
some_function($a, 'B', :check TRUE)
function some_function($first, $second, :check $key1 = FALSE, :foo $key2) { if ($key1) { lala; } elseif ($key2 > 0) { blabla; } }
Sticking a : in front of the variable name, either in the calling code or the function declaration, makes it a keyword argument. Keyword arguments are always optional, and [could|should] default to something handy like FALSE or 0. (Maybe make their defaults settable in php.ini?)
I would implement this myself, but even after reading George
Schlossnagle's fantastic book, I'm still not wizardly enough to do so. If
someone could point me in the right direction, though...
Thanks for listening, Daniel
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php