[英]Scala functional programming and mutability
假設我有以下代碼:
class Pet(name: String) {
def getName: String = {
name match {
case "" => generateRandomName
case _ => name
}
}
}
object Pet {
def apply(name: String) = new Pet(name)
}
創建一個名稱為空的Pet
會創建一個具有隨機名稱的Pet
。 我將如何保存新生成的隨機名稱的 state,因此兩次調用此方法將返回第一次調用生成的相同名稱?
val pet = Pet("")
// Let's say this prints "bob"
println(pet.getName)
// I want this to still print "bob". This would generate a new random name because the state isn't saved from the previous call.
println(pet.getName)
我想避免使用var
,因為它被認為是不好的做法 - 你如何 go 做這樣的事情? 是創建 class 的新副本的最佳方法嗎? 這對我來說似乎不是很有效
在構造函數中使用默認值,你可以做這樣的事情......
class Pet(name: String = generateRandomName) {
def getName: String = name
}
那么當你這樣做時......
val pet = new Pet()
... getName
將始終返回相同的生成名稱,但這...
val pet = new Pet("")
...將name
填充為空String
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.