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

DCS*_*DCS 5 svg types elm

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

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

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

到目前为止我所做的是定义一个具有类似功能的模块

x_ = x << toString
y_ = y << toString
Run Code Online (Sandbox Code Playgroud)

这允许我x_ myX在代码中使用.

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

别人怎么处理这个?

pda*_*moc 3

这些属性是String因为规格允许不同的单位(px、cm等)

最好的方法是制作一系列单元助手来帮助您输出正确的内容。pxcmdeg, ETC。

您可以有一个助手,它只是 toString 的别名。我在我编写的一些CSS代码中使用了justas x (just myX)(出于某种原因,这就是我想要阅读代码的方式),并且我在(简短但可能令人困惑)中看到了sas 。x (s myX)

也许最好的方法是使用类似intas inx (int myX)floatas inx (float myX)

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