Bert Slagter wrote:
> 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



Reply via email to