3b04 Muttable v immutable and implications - Ruby
Home Accessibility Courses Diary The Mouth Forum Resources Site Map About Us Contact
Muttable v immutable and implications - Ruby

A muttable object is one which can be changed in situ, and an immutable object is one that can't be changed in situ - if you want a modified version, you have to build it afresh, using whichever components you require from the orginal. And if the original's not required, you can then scrap it.

There's a tendency for heavily object oriented languages to use immutable obects for simple data types, and muttable ones for more complex types. Thus Python's strings are immutable and Python's dicts are muttable. And this makes sense from a language design viewpoint; the internal structure of a muttable object needs to be more complex than the internal structure of an immutable one, and it will be slower to handle. Thus a tradeoff between complexity and flexibility which goes one way with the simpler object structures, and the other way with more complex object structures.

Does this all matter to the programmer using the language? Yes, it does. On yesterday's Ruby course, we set up two obejects containing identical data, and we tested if they were euqal - using the equal? method which tests if they're one and the same object. With a simple object (an integer), Ruby uses an immutable object and we ended up with two names of the same immutable structure - that's efficiency for you. But when we set up two arrays containing idential (the same) objects, these were muttable, and different ... and we got the opposite result from equal?.

As long as you're aware ... this muttable v immutable, and how it effects the language you're using isn't a problem. But without the knowledge of what's what, you can end us with little surprises when you test for equallity. Equallity is not as simple a concept as it sounds. Just like in real life!

Sample source - Ruby:
Simple object - immutable
More complex object - muttable
(written 2012-06-20, updated 2012-06-23)

 
Associated topics are indexed under
R104 - Ruby - Control Structures
  [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)
  [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)


5462
Back to
Melksham Chamber of Commerce - looking to our future shape. Pivotal meeting next Tuesday
Previous and next
or
Horse's mouth home
Forward to
Sample answers to training course exercises - available on our web site
Some other Articles
Ruby on the web - a simple example using CGI
Hello World - Ruby on Rails - a checklist of each step
Fine evening, country walk from Melksham - pictures
Sample answers to training course exercises - available on our web site
Muttable v immutable and implications - Ruby
Melksham Chamber of Commerce - looking to our future shape. Pivotal meeting next Tuesday
How well do you know Melksham?
Python timing - when to use a list, and when to use a generator
Christmas in June? Melksham hotel bookings and Santa train
Shell, Awk, Perl of Python?
4086 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 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).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2013: 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/3769_Mut ... -Ruby.html • PAGE BUILT: Sat Feb 23 12:39:13 2013 • BUILD SYSTEM: wizard
0