在Elm的SVG模块中,所有属性似乎都期望String
类型参数,从DOM的角度来看这可能是有意义的。然而,从语义上讲,许多属性都是数字,尤其是坐标,半径,宽度等,在算法生成图形时,我碰巧使用了很多。
我的理解是,Elm没有像Scala那样的含义,并且隐含的转换是不受欢迎的,可能是有充分理由的。
另一方面,我不愿意用x <| toString <| myX
混淆我的图形生成代码;太多的视觉噪音。
到目前为止我所做的是定义一个具有
等功能的模块x_ = x << toString
y_ = y << toString
允许我在代码中使用x_ myX
。
我不知道有更优雅的解决方案吗?
其他人如何处理此事?
答案 0 :(得分:3)
属性为String
,因为规格允许不同的单位(px,cm等)
最好的方法是制作一系列单位助手,帮助您输出正确的东西。 px
,cm
,deg
等
你可以有一个帮助器,它只是toString的别名。我在just
中使用了x (just myX)
作为我已写过的一些CSS代码(由于某种原因,我想要阅读代码),我已经看到了s
{1}} x (s myX)
(简短但可能令人困惑)。
最好的方法是使用int
或x (int myX)
中float
之类的内容,而不是x (float myX)
可能比x_
更优雅的另一个选项是import Svg.Attributes as SA
并写x = SA.x << toString
。您还可以在模块中移动这些定义并导入而不是Svg.Attributes
。