A short form of if ... then ... else
There are so many times you want to say "if ... then ... else" to do no more than choose between the word "is" and "are", to say "child" or "children", or to say "may" or "may not" in your output. Using an
if statement for that's a lot of code for a little job.
In most of the languages we teach (
Perl,
PHP,
Python,
Java,
Ruby and
C and C++), the
? ... : operator allows you to do a 'rapid fire' If and else ...
PHP, Perl
print (($n==1) ? "is" : "are") ;
Ruby
In Ruby, the operator is available and you can even embed it within a double quoted string ... (
that's Ruby for you!)
method = miles < 3 ? "walk" : "ride"
or
print "That is a #{miles > 10 ? "LONG" : "short"} distance\n"
See
Complete example source
Tcl, Tcl/Tk and Expect
Tcl is a command based language rather than an operator based one, so as you would expect the : and ? operator is not available everywhere - but you CAN use it within the
expr command, or implicit
expr deferred blocks - the conditions for
if and
while commands.
Here we are, checking under British licensing laws, whether we can sell you alcohol:
set mayyou [expr (($here > 17)?"may":"may not")]
puts "You $mayyou buy a drink"
The full source code is
here.
As even with Tcl, I could place the square bracketed expression for evaluation into my
puts, but I've decided to keep it clear rather than concise.
Want to know more?
We provide training courses on all the languages I have mentioned - we offer
scheduled public courses if you have just one or two delegates, and we can run
private courses (and even do so
at your own offices) if you have a larger group.
(written 2009-10-23)
2aee
Associated topics are indexed under
R104 - Ruby - Control Structures [3769] Muttable v immutable and implications - Ruby - (2012-06-20)
[3620] Finding the total, average, minimum and maximum in a program - (2012-02-22)
[3619] Ruby v Perl - a comparison example - (2012-02-21)
[3422] Assigning values to variables within other statements - Ruby - (2011-09-07)
[3397] Does a for loop evaluate its end condition once, or on every iteration? - (2011-08-18)
[3254] Multiple inputs, multiple out, ruby functions - (2011-04-19)
[3253] Is this number between? Does this list include? - Ruby - (2011-04-18)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[3159] Returning multiple values from a function call in various languages - a comparison - (2011-02-06)
[3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
[3156] Splitting data reading code from data processing code - Ruby - (2011-02-04)
[2975] Why do I need brackets in Ruby ... or Perl, Python, C or Java - (2010-09-29)
[2892] Alternative loops and conditionals in Ruby and Perl - (2010-07-28)
[2711] For loop - checked once, or evety time? Ruby v Perl comparison and contrast - (2010-04-07)
[2619] Passing code to procedures and yield in Ruby - (2010-02-02)
[2287] Learning to program in Ruby - examples of the programming basics - (2009-07-15)
[1904] Ruby, Perl, Linux, MySQL - some training notes - (2008-11-23)
[1891] Ruby to access web services - (2008-11-16)
[1887] Ruby Programming Course - Saturday and Sunday - (2008-11-16)
[1870] What to do with a huge crop of apples - (2008-11-04)
[1738] Clean code, jump free (Example in Lua) - (2008-08-06)
[1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
[1587] Some Ruby programming examples from our course - (2008-03-21)
[1582] Ruby, C, Java and more - getting out of loops - (2008-03-19)
[1220] for loop - how it works (Perl, PHP, Java, C, etc) - (2007-06-06)
[1163] A better alternative to cutting and pasting code - (2007-04-26)
[995] Ruby's case - no break - (2006-12-17)
[985] Equality in Ruby - == eql? and equal? - (2006-12-14)
[962] Breaking a loop - Ruby and other languages - (2006-12-03)
[960] 1st, 2nd, 3rd revisited in Ruby - (2006-12-02)
T203 - Tcl/Tk - Conditionals and Loops [3571] Comparing loop commands in Tcl - (2012-01-06)
[3570] Trapping errors in Tcl - the safety net that catch provides - (2012-01-06)
[3189] Tcl - the danger of square brackets in a while command - (2011-03-02)
[2681] Tcl - a great engineering language - (2010-03-17)
[2261] Tcl - nice and nasty - (2009-06-29)
[1477] Decisions - small ones, or big ones? - (2007-12-18)
[1401] Tcl - using [] or {} for conditions in an if (and while) - (2007-10-23)
[210] Joining lists in Tcl. Indirect variables in Tcl. - (2005-02-12)
Some other Articles
Quick easy and dangerous - automated logins via Tcl / ExpectUsing Tcl and Expect to automate repetitive jobsExploring Old Railwayssplit and join in tcl and expectA short form of if ... then ... elseWindows 7 and Open Source ProgrammingBeyond the PaleWhat are Tcl lists?Tcl - catching an error before your program crashesTcl - passing arrays and strings in and back out of procs