Trinary operator?

Philipp Lenssen lenssen at hitnet.rwth-aachen.de
Fri Apr 19 16:47:09 EDT 2002


"Cliff Wells" <logiplexsoftware at earthlink.net> wrote in message
news:mailman.1019240861.31256.python-list at python.org...
>..
> It hadn't occurred to me that exceptions would be any faster than
> .get().  I didn't use a predefined dictionary since the OP was looking for
an
> equivalent to C's ternary operator (which I took to mean "one line")
>..

The OP has to add that his ternary operators actually can span several lines
for readability. (I'm not a big fan of saving vertical space when
readability suffers.)

language = "german";
gender = "m";

verboseGenderMale = (language == "english") ?
        "male" : "männlich";
verboseGenderFemale = (language == "english") ?
        "female" : "weiblich";
verboseGender = (gender == "m") ?
        verboseGenderMale : verboseGenderFemale;


And no, this is not very realistic code and I would likely do it all
different.

function getVerboseGender(gender)
{
    verboseGender = "";

    isMale = (gender == "m");
    isFemale = (gender == "f");

    if (isMale || isFemale)
    {
        switch (self->language)
        {
            case "german":
                verboseGender = (isMale) ?
                        "männlich" : "weiblich";
                break;
            default: // english
                verboseGender = (isMale) ?
                        "male" : "female";
        }
    }
    else
    {
        message = "Gender exception: asexual";
        error->raise(message);
    }

    return verboseGender;
}


(Nope, I guess in the end I would put that data where it belongs, outside
the source.)







More information about the Python-list mailing list