所以,我试图以各种方式解决这个问题,但我无法做到这一点。
有没有办法制作一个包含不同测量单位值的列表(全部基于浮点数)?例如:
let myList = [0.07<ms>; 0.9; 7.2<mm>;]
由于它们被视为不同类型,因此您无法将它们放在同一列表中。我尝试将列表声明为let myList : float<_> list = ...
,并给出无量纲数字作为度量单位,但我仍然遇到输入错误:期望浮动&lt;'u&gt;但是浮起来了。
我无法使用元组/ n-ple,因为我不知道列表中的值的数量。
我对F#很陌生并花了很长时间在存储上搜索文档和网页,但还没有找到解决方案。如果有人能指出我正确的方向,我会非常感激。谢谢!
答案 0 :(得分:4)
我认为您需要提供一个更长的示例,说明您希望如何使用此列表。否则很难给出一个好的答案,因为这取决于使用情况。
如果您只是想创建一个代表不同内容的数字列表,那么您可以考虑使用区别联合来区分它们:
type Numeric =
| Length of float<mm>
| Time of float<ms>
| Unitless of float
let myList = [ Time 0.07<ms>; Unitless 0.9; Length 7.2<mm>;]
然后,您可以创建包含不同数字(具有不同物理意义)的列表。迭代列表时,您需要使用模式匹配来提取值。
或者,您可以在创建列表时删除所有单位,但之后您将失去计量单位提供的保证(这意味着当您从列表中获得某些值时,您将不知道它具有哪个单位而且您可能会错误地解释它:)
let myList = [ float 0.07<ms>; 0.9; float 7.2<mm>;]
答案 1 :(得分:1)
列表must have the same type的所有成员。 float<ms>
与float<mm>
不同。