如何避免Elm SVG代码中的类型转换混乱

时间:2016-06-26 08:34:51

标签: svg types elm

在Elm的SVG模块中,所有属性似乎都期望String类型参数,从DOM的角度来看这可能是有意义的。然而,从语义上讲,许多属性都是数字,尤其是坐标,半径,宽度等,在算法生成图形时,我碰巧使用了很多。

我的理解是,Elm没有像Scala那样的含义,并且隐含的转换是不受欢迎的,可能是有充分理由的。

另一方面,我不愿意用x <| toString <| myX混淆我的图形生成代码;太多的视觉噪音。

到目前为止我所做的是定义一个具有

等功能的模块
x_ = x << toString
y_ = y << toString

允许我在代码中使用x_ myX

我不知道有更优雅的解决方案吗?

其他人如何处理此事?

1 个答案:

答案 0 :(得分:3)

属性为String,因为规格允许不同的单位(px,cm等)

最好的方法是制作一系列单位助手,帮助您输出正确的东西。 pxcmdeg

你可以有一个帮助器,它只是toString的别名。我在just中使用了x (just myX)作为我已写过的一些CSS代码(由于某种原因,我想要阅读代码),我已经看到了s {1}} x (s myX)(简短但可能令人困惑)。

最好的方法是使用intx (int myX)float之类的内容,而不是x (float myX)

可能比x_更优雅的另一个选项是import Svg.Attributes as SA并写x = SA.x << toString。您还可以在模块中移动这些定义并导入而不是Svg.Attributes