- 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.
- Getting Started with React
- C語言程序設計(第3版)
- Building a RESTful Web Service with Spring
- Scala Design Patterns
- Java程序員面試算法寶典
- Nginx Essentials
- 微信公眾平臺開發:從零基礎到ThinkPHP5高性能框架實踐
- 深度強化學習算法與實踐:基于PyTorch的實現
- Getting Started with Laravel 4
- LabVIEW虛擬儀器入門與測控應用100例
- Go語言開發實戰(慕課版)
- OpenMP核心技術指南
- 硬件產品設計與開發:從原型到交付
- 深度實踐KVM:核心技術、管理運維、性能優化與項目實施
- Web開發的平民英雄:PHP+MySQL