假設我想要一個類如Java Date
。它唯一的數據成員是一個漫長的代表自1970年以來Scala中的「裝箱」原始類型的開銷
毫秒會/莫非只是做一個新的Scala類型的任何性能優勢:
type PrimitiveDate = Long
然後,你可以通過使用隱式添加方法轉換,就像使用RichInt
進行int處理一樣。這種將原始類型「裝箱」成一個豐富的類是否涉及任何開銷(創建類)?基本上,你可以只是一個靜態方法
def addMonth(date: PrimitiveDate, months: Int): PrimitiveDate = date + 2592000000 * months
,並讓類型系統弄清楚,它具有當d addMonth 5
出現在代碼中得到應用。
編輯
看來你寫type PrimitiveDate = Long
創建別名不是由Scala編譯器執行。是否正在創建一個適當的類,並附上Long,這是在Scala中創建強制類型的唯一方法?
您認爲能夠爲原始類型創建強制類型別名有多大用處?
「執行別名」的好處。那是我想知道的一件事。所以沒有辦法在scala中爲原始類型創建適當的類型別名? – ziggystar 2010-10-20 14:56:58
@ziggystar - 沒有沒有。我傾向於將類型別名用於以下兩種情況之一:像凱文那樣的私人內部東西在下面談論;包對象導入(即爲什麼'List'似乎仍是在'scala'包) – 2010-10-20 15:10:12
我覺得萬里薩賓想出了一個優雅和高性能[解決方案](https://gist.github.com/milessabin/89c9b47a91017973a35f)在提出這個問題後11個月。 – itsbruce 2015-08-24 15:30:32