Training, Open Source Programming Languages

This is page http://www.wellho.net/mouth/3422_Ass ... -Ruby.html

Our email: info@wellho.net • Phone: 01144 1225 708225

Assigning values to variables within other statements - Ruby

In Ruby, and in Perl too, you can use assignments within other statements and in so doing perform two distinct actions in one line of code. Here's what I mean (using irb - interactive Ruby):

  >> j = 16
  => 16
  >> print "The value is #{k=j} at the moment"
  The value is 16 at the moment=> nil
  >> print k
  16=> nil
  >>


... you'll notice that I've both printed out a line of text including the value of the variable j, and copied it to the variable k, in a single statement.

Operations such as this can also effect the incoming variables, and where they do you need to take care to ensure that you know whether the second use of the variable's value wil be made before or after it is changed. Look at this statement:

  print "#{now+=1}"

... and ask yourself whether it will be the old value of now, or the new one, that's printed out, And again - in

  bob = now += 4

will bob be assigned to a copy of the incoming value of now, or the outgoing value once 4 has been added?

In general, the answer to the question "what happens first" comes down tho the languages's precedence tree and any bracketting you have in there (there are some catches with how opertors like += and Perl's ++ interact with brackets). And in general, I'm going to advise that you should usually write the code as two lines if you want to perform two actions.. By separating the operations, you may be making the code a little longer, but you're also making it unambiguous to the inexperienced reader who may come along to maintain the code later. And you're also going to save yourself any problems if you're required to remove one but not both of the operations performed at a later date.

Scenario ... the boss comes along. "Great program, Graham, but a bit verbose on its output. Can you remove the step logging as it run?" So I delete the print statment that I've shown above .. and then the whole program fails as I've also removed the secondary effect of increasing now. Oops!

Full source code example including the statements above - [here]. There's also sample output so you can see how it ran, and what the order was.
(written 2011-09-07)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
R104 - Ruby - Control Structures
  [4323] Learning to program - Loop statements such as while - (2014-11-22)
  [4322] Learning to Program - the conditional statement (if) - (2014-11-21)
  [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)
  [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)
  [2471] A short form of if ... then ... else - (2009-10-23)
  [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)


Back to
Ruby off the Rails?
Previous and next
or
Horse's mouth home
Forward to
1 + 1 + 1 + 1 = 12?
Some other Articles
Automed web site testing scripted in Ruby using watir-webdriver
Our National Autograss Champion, from Melksham
Divide 10000 by 17. Do you get 588.235294117647, 588.24 or 588? - Ruby and PHP
1 + 1 + 1 + 1 = 12?
Assigning values to variables within other statements - Ruby
Ruby off the Rails?
Making best use of the new enthusiasm for Melksham
Data that we use during our training courses, and other training resources
Tcl packages, pkg_mkIndex, pkgIndex.tcl -what are they and why use them.
What is a namespace and why do we need them?
4318 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

© WELL HOUSE CONSULTANTS LTD., 2014: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 899360 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/3422_Ass ... -Ruby.html • PAGE BUILT: Thu Sep 18 15:30:25 2014 • BUILD SYSTEM: WomanWithCat