Units.scala dosyasında tanımlanan metascala Ölçü Birimleri işlevleriyle çalışırken bir sorunla karşılaştım.Tür düzeyi hesaplamaları kullanırken tür/tür denetimi başarısızlığı yazın.
Bu sorunun geri kalanı için, yalnızca bir Ünite tipi, uzunluğu olan basitleştirilmiş bir şema kullanacağım.
Quantity[_1]
^
|
Length
kısa sürede tipi anlaşılmaktadır gereken şekilde problemler başlar: Bu sorunu gösterdiği için yeterli olacaktır
Quantity[_1, _0, _0, _0, _0, _0, _0]
^^^^^^^
| | | | | | |
| Mass | Crncy.| Mol |
Length Time Temp. Lum.Intensity
gibi
Yani gerçekte bir tür görünüyor nerede.
(ayrıca UnitsTest.scala kod bakabilirsiniz) Bu örneği ele alalım:
val length: Quantity[_1] = m(5)
val area: Quantity[_2] = length * length // (1) Works
val dist: Quantity[_1] = area/length // (2) Doesn't work!
Dediğim son satırında bir hata alıyorum: Bu derleyicisi gibi görünüyor
type mismatch;
found :
scalax.units.Units.Quantity[
scalax.units.Subtractables.-[
scalax.units.Integers._2,
scalax.units.Integers._1
]
]
required:
scalax.units.Units.Quantity[
scalax.units.Integers._1
]
olabilir' eldeki tipin, "bir boyutun çıkarılması" olduğunda, Quantity[_1]
'a eşit olduğunu, e. g. alana giden (1)
gibi Dist için:
Quantity[_2 - _1] <<not equal to>> Quantity[_1]
kafa karıştırıcı şey e "bir boyut ekleyerek" ne zaman çalışmasıdır. g. (2)
gibi bölgeye uzunluğu giden:.
Quantity[_1 + _1] <<equal to>> Quantity[_2]
(burada bütün kodunuzu yapıştırmak için üzgünüm, çok fazla adildir benim örnek aza indirmek için çalıştı, ama beceremedim ben sadece bağlama sebebi bu. 1
Evet, bu düzeltme. Ben iki düzeltmeyi MetaScala repo'ya adadım. –