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)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
T203 - Tcl/Tk - Conditionals and Loops [210] Joining lists in Tcl. Indirect variables in Tcl. - (2005-02-12)
[1401] Tcl - using [] or {} for conditions in an if (and while) - (2007-10-23)
[1477] Decisions - small ones, or big ones? - (2007-12-18)
[1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
[2261] Tcl - nice and nasty - (2009-06-29)
[2681] Tcl - a great engineering language - (2010-03-17)
[3189] Tcl - the danger of square brackets in a while command - (2011-03-02)
[3397] Does a for loop evaluate its end condition once, or on every iteration? - (2011-08-18)
[3570] Trapping errors in Tcl - the safety net that catch provides - (2012-01-06)
[3571] Comparing loop commands in Tcl - (2012-01-06)
[4322] Learning to Program - the conditional statement (if) - (2014-11-21)
[4323] Learning to program - Loop statements such as while - (2014-11-22)
[4455] Working out distance between places, using OS grid references and a program in Tcl - (2015-03-11)
R104 - Ruby - Control Structures [960] 1st, 2nd, 3rd revisited in Ruby - (2006-12-02)
[962] Breaking a loop - Ruby and other languages - (2006-12-03)
[985] Equality in Ruby - == eql? and equal? - (2006-12-14)
[995] Ruby's case - no break - (2006-12-17)
[1163] A better alternative to cutting and pasting code - (2007-04-26)
[1220] for loop - how it works (Perl, PHP, Java, C, etc) - (2007-06-06)
[1582] Ruby, C, Java and more - getting out of loops - (2008-03-19)
[1587] Some Ruby programming examples from our course - (2008-03-21)
[1738] Clean code, jump free (Example in Lua) - (2008-08-06)
[1870] What to do with a huge crop of apples - (2008-11-04)
[1887] Ruby Programming Course - Saturday and Sunday - (2008-11-16)
[1891] Ruby to access web services - (2008-11-16)
[1904] Ruby, Perl, Linux, MySQL - some training notes - (2008-11-23)
[2287] Learning to program in Ruby - examples of the programming basics - (2009-07-15)
[2619] Passing code to procedures and yield in Ruby - (2010-02-02)
[2711] For loop - checked once, or evety time? Ruby v Perl comparison and contrast - (2010-04-07)
[2892] Alternative loops and conditionals in Ruby and Perl - (2010-07-28)
[2975] Why do I need brackets in Ruby ... or Perl, Python, C or Java - (2010-09-29)
[3156] Splitting data reading code from data processing code - Ruby - (2011-02-04)
[3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
[3159] Returning multiple values from a function call in various languages - a comparison - (2011-02-06)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[3253] Is this number between? Does this list include? - Ruby - (2011-04-18)
[3254] Multiple inputs, multiple out, ruby functions - (2011-04-19)
[3422] Assigning values to variables within other statements - Ruby - (2011-09-07)
[3619] Ruby v Perl - a comparison example - (2012-02-21)
[3620] Finding the total, average, minimum and maximum in a program - (2012-02-22)
[3769] Muttable v immutable and implications - Ruby - (2012-06-20)
[4370] Conditionals, loops and methods in Ruby - a primer with simple examples - (2014-12-29)
[4402] Finding sum, minimum, maximum and average in Python (and Ruby) - (2015-01-19)
[4503] Separating your code for easier testing, understanding and re-use; example in Ruby - (2015-06-02)
[4504] Where does Ruby load modules from, and how to load from current directory - (2015-06-03)
[4674] Alternating valuses / flip-flop / toggle - example in Ruby - (2016-05-17)
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