是的,你可以用type alias做到這一點。
type Integers = List[Int] // scala.Int is preferred over java.lang.Integer
這就是說,這不是一個真正的好用。 List[Int]
對其他scala開發人員來說非常清楚,您的類型Integers
不會提供額外的信息,因此會隨着時間的推移而降低代碼的可讀性。
一個使用類型別名會雖然提高代碼的可讀性會是這樣的
type UserId = Int
def processUsers(ids: List[UserId]): Foo
在這種情況下,它提供額外的信息給讀者VS
def processUsers(ids: List[Int]): Foo
使用那種類型的別名還可以讓您通過將類型別名的定義更改爲value class,逐漸使您的代碼更具類型安全性。
case class UserId(value: Int) extends AnyVal
你不會需要改變的已經有「UserId
」什麼方法簽名,但是這將讓編譯器幫助你確保你不這樣做
val ids: List[Int] = getBlogPostIds()
val foo = processUsers(ids) // Oops, those Ints are for blog posts, not users
使用值類方法,像這樣的錯誤成爲編譯器錯誤。它廣泛使用它在編寫正確的代碼時增加了很多指導。
val ids: List[BlogPostId] = getBlogPostIds
val foo = processUsers(ids) // Compile error; BlogPostId != UserId
謝謝Daenyth –