1
A
回答
2
沒有共同的超類型所有可能的數值類型在Scala中,所以我會用Numeric特質。它不是一種類型綁定,而是一種類型類,您可以要求在範圍內提供隱含的Numeric[A]
。蘊涵已經存在於所有Scala數字類型的範圍內。
def a[T](t: T)(implicit num: Numeric[T]): T = num.times(t, t)
或者
def a[T: Numeric](t: T): T = implicitly[Numeric[T]].times(t, t)
1
斯卡拉spire庫是真棒。它提供了許多類型的數字抽象。
import spire.math._
import spire.implicits._
def negate[A: Integral](x: A) = -(42 * (x /~ 42) + x % 42)
0
也發現了類似的解決方案(即允許分裂,太)
import scala.math.Integral.Implicits._
def a[T:Integral](t:T):T = t * t/t
相關問題
- 1. Haskell - 數據類型的算術運算
- 2. 代碼不允許在javascript計算器上進行適當的算術運算
- 3. 約束類型以允許在C#中進行加/減運算(+/-)
- 4. 算術定義
- 5. 算術運算
- 6. 算術運算
- 7. 算術運算
- 8. 算術運算
- 9. 算術運算
- 10. 計算值許多值與許多算術運算符C++
- 11. 我可以在Number基類上進行算術運算嗎?
- 12. net.sf.saxon.trans.XPathException:算術運算符沒有爲類型參數(xs:string,xs:string)定義
- 13. 具有泛型類型的算術運算符(+, - ,/,*)的使用
- 14. CSH算術運算
- 15. BCD算術運算
- 16. 算術運算符
- 17. 使用typeof運算類型定義
- 18. 抽象類重載算術運算符
- 19. 如何使用算術運算對不同類型的列進行算術運算過濾3 3
- 20. Golang:結構上的算術運算符
- 21. int上的基本算術運算 - Java
- 22. jpa列上的算術運算查詢
- 23. Erlang上的Erlang算術運算:select result
- 24. 爲什麼C++不允許用戶定義的運算符?
- 25. fsyacc:允許在語言中定義運算符
- 26. 類型參數化算術?
- 27. 警告:類型算術
- 28. 使用泛型類來執行基本的算術運算
- 29. 伊德里斯類型導出用於算術運算
- 30. 斯卡拉 - 對類型的PARAMS算術運算的任何
它的工作原理,但很繁瑣。對於這樣一個典型的問題,真的沒有比這更清潔的解決方案嗎? Scala核心團隊是否故意不提供數字類型的類?有了這樣一個類,只需要'def a [T <:Numeric](t:T):T = t * t'? – Jivan
@Jivan'數字'_is_類型類。 'T <:數字'意味着'T'是'Numeric'的子類型。不幸的是,這是一個基本上從Java繼承的問題,因爲Java的數字類型在基元和對象之間分割。 Scala可以實現它自己的類型,但是可能存在互操作性和優化問題。如果你不喜歡寫出'num.times(t,t)',那麼你總是可以在上面的例子中導入scala.math.Numeric.Implicits._'並寫入't * t' 。 –