想辦法從2小時減去5分鐘。類型參數化算術?
從2中減去5是沒有意義的,因爲我們以-3個通用時間單位結束,這是無用的。但如果「小時」是「分鐘」的子類型,我們可以將2小時轉換爲120分鐘,併產生115分鐘或1小時55分鐘。同樣,如果我們想爲5個桔子添加5個蘋果,我們無法用蘋果來評估這個,但可能預計最終會有10個果實。
看來在上面的例子中,通常當使用數字作爲形容詞時,整數需要通過他們描述的對象的類型來參數化。我認爲這將是非常有用的,如果不是的聲明
val hours = 2
val minutes = 5
你可以做類似
val hours = 2[Hour]
val minutes = 5[Minute]
val result = hours - minutes
assert (result == 115[Minute])
是否像這樣的東西存在,這將是有用的,是什麼事情,可以實現?
編輯:爲了澄清,上面的時間示例只是我想的一個隨機示例。我的問題是,一般來說參數化Numerics的想法是一個有用的概念,就像你有參數化列表等等(答案可能是「不」,我不知道!)
它可以和已經用很多語言完成。但沒有關於斯卡拉的線索:) – jalf
答案建議你使用像'3.minutes'這樣的結構,它可能會返回某個時間類型的實例。如果你想朝這個方向前進,你可能會想看看「斯卡拉喬達時間」庫,這是一個圍繞Joda Time for Java的Scala包裝器。但是你的例子看起來更像是你想要一個類型類型,比如:'特性TimeValue [TimeUnit]',其中'TimeUnit'是一個_phantom類型_。這看起來非常有趣,因爲它也可能適用於其他單位的措施。我想知道是否可以做到。 – Madoc
這通常稱爲_units_或_measures_。再看看適當的術語 - 有一些圖書館和很多事先的討論。 –