- Scala Functional Programming Patterns
- Atul S. Khot
- 231字
- 2021-07-30 09:44:22
Immutable
Each one of us has a name. Let's keep this simple—a first and last name. My first name is Atul and my last name is Khot. If someone suddenly called me by the name Prakash, things won't work!
Keeping aside cases such as writers taking a pen name (that is, Plum for PG Wodehouse), commonly each one of us has a standard, official name. We simply don't want parts of it changed to willy nilly. Let's try the following example:
scala> case class FullName(firstName: String, lastName: String) defined class FullName scala> val name = FullName("Bertie", "Wooster") name: FullName = FullName(Bertie,Wooster) scala> name.firstName = "Mrs. Bertie" <console>:13: error: reassignment to val name.firstName = "Albert"
Scala stopped us changing the code of Woosters!! It just saved Bertie from getting a wife!
In case you need a break and some light relief, Google The Code of the Woosters!
Once a case class instance is created, it is sealed. You can read it, but you cannot change it:
scala> name.firstName res12: String = Bertie scala> name.lastName res13: String = Wooster
You can even look at the signified version of the instance that the compiler writes for you:
scala> name res14: FullName = FullName(Bertie,Wooster)
And you can destructure it using pattern matching. Immutability just reduces the moving parts and helps us to restore sanity. This is a boon when threads enter the picture.
- JavaScript修煉之道
- iOS 9 Game Development Essentials
- 深入理解Django:框架內(nèi)幕與實(shí)現(xiàn)原理
- Reactive Programming with Swift
- NativeScript for Angular Mobile Development
- Blender 3D Incredible Machines
- GeoServer Beginner's Guide(Second Edition)
- SQL Server 2016數(shù)據(jù)庫應(yīng)用與開發(fā)習(xí)題解答與上機(jī)指導(dǎo)
- 從Excel到Python:用Python輕松處理Excel數(shù)據(jù)(第2版)
- 快速入門與進(jìn)階:Creo 4·0全實(shí)例精講
- Clean Code in C#
- 深入實(shí)踐DDD:以DSL驅(qū)動(dòng)復(fù)雜軟件開發(fā)
- Android應(yīng)用開發(fā)攻略
- Kohana 3.0 Beginner's Guide
- HTML5程序設(shè)計(jì)基礎(chǔ)教程