在Elm的SVG模块中,所有属性似乎都期望String类型参数,从DOM的角度来看这可能是有意义的.然而,在语义上,许多属性是数字,尤其是坐标,半径,宽度等,我在算法生成图形时碰巧使用了很多.
我的理解是,Elm没有像Scala那样的含义,并且隐含的转换是不受欢迎的,可能是有充分理由的.
另一方面,我不愿意混淆我的图形生成代码x <| toString <| myX; 太多的视觉噪音.
到目前为止我所做的是定义一个具有类似功能的模块
x_ = x << toString
y_ = y << toString
Run Code Online (Sandbox Code Playgroud)
这允许我x_ myX在代码中使用.
我不知道有更优雅的解决方案吗?
别人怎么处理这个?
这些属性是String因为规格允许不同的单位(px、cm等)
最好的方法是制作一系列单元助手来帮助您输出正确的内容。px,cm,deg, 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.