F # и Scala оба имеют возможность создавать принудительные неизменяемые типы (то есть классы).
Ниже показаны основы F # ...
// using records is the easiest approach (but there are others)
type Person = { Name:string; Age:int; }
let p = { Person.Name="Paul";Age=31; }
// the next line throws a compiler error
p.Name <- "Paulmichael"
Вот эквивалентная Scala. Обратите внимание, что вы все еще можете создавать изменяемые объекты, используя var
вместо val
.
class Person(val name: String, val age: Int)
val p = new Person("Paul", 31)
// the next line throws a compiler error
p.name = "Paulmichael"