On 16/03/2016 14:31, Marko Rauhamaa wrote:
BartC <b...@freeuk.com>:

Even Ruby has one.

  case
  when this
     ....
  when that

That's a different topic.

Yes but, if Ruby has it, why shouldn't Python? (Aren't they rivals or something?)

which is exactly equivalent to if this... elif that... (when the tests
are ordered), with one difference:

That is no different from a chained if/elif.

That's what I said, but it's an interesting, more symmetric alternative.

Scheme has this:

    (case (die10)
      ((1 3 5 7 9)
       => (lambda (n)
            n))
      (else
       => (lambda (n)
            (/ n 2))))

which maps 1, 3, 5, 7 and 9 onto themselves but halves 2, 4, 6, 8 and
10.

I don't get this; what does the lambda do here? Why not just yield either n or n/2?

As for a chained if/elif, Scheme as "cond:"

    (cond
     ((windy?)
      (fly-kite))
     ((shining? sun)
      (go-out))
     ((raining?)
      (play-soccer))
     (else
      (read-book)))

Which is like my Ruby case example. Simple and to the point. (Not sure of the significance of ?)

--
Bartc

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to