Talk:Immutable object

Latest comment: 5 months ago by Jzandin in topic Language-specific details for C

InmutableChart

edit

there is an error: ImmutableCart is immutable only if elements of the list are themselves immutable. Otheriwse, you copy the list allright, but you share the elements with the caller, so he can mutate them as he pleases. —Preceding unsigned comment added by 128.30.84.40 (talkcontribs) 18:40, 19 November 2005

I disagree. It depends on what you consider part of the "ImmutableCart" object. I consider an "ImmutableCart" object to contain only its fields, i.e. the reference "items". Under this definition, "ImmutableCart" is indeed immutable. --Spoon! 09:03, 18 March 2007 (UTC)Reply
Wouldn't this imply that the Cart class is immutable too? I.e. the 'items' reference never changes (although its contents may change). Zedoo (talk) 18:28, 16 August 2008 (UTC)Reply

I changed all references to vector in the C++ example to std::vector, as the C++ example would presumably be in a header file and it is generally considered bad style to include a global using namespace directive in a header file. I think it's very important for code examples to exhibit good style even if that makes them a little more verbose. - Zixyer 02:24, 19 December 2005 (UTC)Reply


why does defensive copying link to object (computer science) which has no information as to what "defensive copying" means probably a mistake, can somebody correct? --Alex 11:10, 30 December 2005 (UTC)Reply

I changed the defensive copy redirect to go to Object copy instead, which talks about defensive copying.Tim Dean 22:07, 31 December 2005 (UTC)Reply

List to Array to List?

edit

I'm not a C# guy so I was afraid to make the change myself, but does anyone else see anything wacky about ImmutableCart's constructor? I checked the docs and it looks like List has a constructor that takes a collection as an argument, presumably creating a new list containing the same objects as the old one.

Is there a good reason why the example takes the input List, turns it into an array, then turns it into a new List? Guess I'll just make the change... tfrey 21:31, 14 April 2008 (UTC)

Because it's not C# but Java, and List is (last time I checked) not a class and cannot be instantiated. I'm reverting the change. -- Taku (talk) 11:53, 4 May 2008 (UTC)Reply
But wouldn't Collections.unmodifiableList(items) be better in both cases? --131.159.0.7 (talk) 14:57, 14 June 2008 (UTC)Reply

No, because Collections.unmodifiableList(items) doesn't create a copy of a list. items.toArray(), on the other hand, gives a copy of an array (not the underlying array.) -- Taku (talk) 20:55, 14 June 2008 (UTC)Reply

Need for disambiguation

edit

"Mutability" is also used in the biological sciences. E.g. In Voet&Voet, 2011, p3, "Life possesses the properties of replication, catalysis, and mutability." 86.184.76.240 (talk) 16:02, 20 January 2011 (UTC)Reply

Error in c++ example

edit

The first example in the c++ is not fully immutable. By returning a reference in the non-const getItems() you allow the priovate data to be edited. see my example on ideone: http://ideone.com/kWhakl This function needs to either return a copy or a const reference, then the function marked as const. — Preceding unsigned comment added by 108.47.10.190 (talk) 16:07, 7 April 2014 (UTC)Reply

C# example

edit

Is it possible to have C# examples on this page as well? Is Java folks and other anti-MSFT folks don't mind.. — Preceding unsigned comment added by 94.237.84.224 (talk) 07:00, 3 February 2015 (UTC)Reply

mysterious words explained

edit

I have been coding for years, and always thought that "mutable" and "immutable" meant something different from simply "changeable" and "unchangeable". Now I am laughing at myself. Why didn't I check those words in a dictionary?

But my story raises a question. Why do we still use these mysterious names? Do these "clever" names make us more clever as programmers or maybe even as humans? ;-)85.193.250.20 (talk) 23:25, 11 February 2016 (UTC)Reply

modifies a pointer an a length filed

edit

Re "modifies a pointer an a length filed" I suspect that filed might be field, but I'm not sure how to correct the "an a" it doesn't make sense to me, but wouldn't make any more sense if changed to "and a". ϢereSpielChequers 11:24, 17 January 2019 (UTC)Reply

What is immutable in JavaScript

edit

Where we should use immutable ?? 115.127.172.50 (talk) 17:31, 16 August 2022 (UTC)Reply

Language-specific details for C

edit

It would be useful to have a section of language-specific details also for C. Jzandin (talk) 13:55, 30 May 2024 (UTC)Reply