2016-06-26 1 views
4

エルムのSVGモジュールでは、すべての属性にはString型のパラメータが必要と思われます。これはおそらくDOMの観点からは意味があります。しかし意味的には、多くの属性は数値、特に座標、半径、幅などであり、アルゴリズムをアルゴリズムで生成するときに多く使用されます。エルムSVGコードの型変換の乱雑さを避ける方法

私の理解では、ElmにはScalaのような暗黙の記述がなく、その暗黙的な変換はうまくいっています。

一方、グラフィック生成コードをx <| toString <| myXと混乱させたくありません。あまりにも多くの視覚的ノイズ。

は、私がこれまでにやっていることは、私はコードでx_ myXを使用することができます

x_ = x << toString 
y_ = y << toString 

のような機能を持つモジュールを定義しています。

私が気付いていないよりエレガントなソリューションはありますか?

他の人はどのように対処していますか?仕様は最善のアプローチは、出力正しいことをするあなたを助けるユニットヘルパーのシリーズを作ることであろうさまざまな単位(ピクセル、センチ、など)

を可能とするため

答えて

3

属性がStringです。 pxcmdegなど

これはtoStringのエイリアスです。私はのようなjustをいくつかのCSSコードで使用しました。何らかの理由でコードを読みたいのですが、x (s myX)のようにsを見ましたが、混乱する可能性があります。

たぶん最高のx (float myX)

にようx (int myX)またはfloatのようimport Svg.Attributes as SAからx_があるよりも、よりエレガント可能とx = SA.x << toStringを書くかもしれない別のオプションをintのようなものを使用することです。これらの定義をモジュール内で移動し、Svg.Attributesの代わりにインポートすることもできます。

+0

'toString'を' s'でエイリアスするのは、実際にはこれらの 'x_'などの関数を書く前に行ったことです。私はまだ、複雑な機能ではあまりにも渋滞していることがわかります。特にブラケットやパイプが必要な場合にはそうです。ユニットについての興味深い点! – DCS

+0

'x_'よりもエレガントかもしれない別のオプションは、' Svg.AttributesをSAとしてインポート 'し、' x = SA.x << toString'と書くことです。これらの定義をモジュール内で移動し、 'Svg 'の代わりにそれをインポートすることもできます。属性。 – pdamoc

+0

それは素晴らしい考えです!これをコメントからあなたの答えに移すことをお勧めします。だから、今後の読者にとってはより顕著です。チェックマークはあなたのものです。 ;) – DCS

関連する問題