Search results
Results From The WOW.Com Content Network
In object-oriented (OO) and functional programming, an immutable object (unchangeable [1] object) is an object whose state cannot be modified after it is created. [2] This is in contrast to a mutable object (changeable object), which can be modified after it is created. [ 3 ]
Scala provides mutable and immutable variants of most collection classes, and the immutable version is always used unless the mutable version is explicitly imported. [34] The immutable variants are persistent data structures that always return an updated copy of an old object instead of updating the old object destructively in place.
But languages which emphasize immutable data can make good use of covariant data types. For example, in all of Scala, Kotlin and OCaml the immutable list type is covariant: List [Cat] is a subtype of List [Animal]. Scala's rules for checking variance annotations are essentially the same as C#'s.
The relatively new System.Collections.Immutable package, available in .NET Framework versions 4.5 and above, and in all versions of .NET Core, also includes the System.Collections.Immutable.Dictionary<TKey, TValue> type, which is implemented using an AVL tree. The methods that would normally mutate the object in-place instead return a new ...
Main page; Contents; Current events; Random article; About Wikipedia; Contact us
This reportedly allows for greater performance than when comparing or making copies of regular JavaScript objects. [30] One such library of persistent data structures Immutable.js is based on the data structures made available and popularized by Clojure and Scala. [31]
The main difference between an arbitrary data structure and a purely functional one is that the latter is (strongly) immutable. This restriction ensures the data structure possesses the advantages of immutable objects: (full) persistency, quick copy of objects, and thread safety.
For example, in OCaml object fields are immutable by default and must be explicitly marked with the keyword mutable to be mutable, while in Scala, bindings are explicitly immutable when defined with val for "value" and explicitly mutable when defined with var for "variable".