Types 如何让模块使用者在Elm中定义类型
我在Elm项目中创建了一个表模块 每个列都有一个getter函数,该函数定义了它们如何从为行建模的记录中检索数据 因此,一行可能看起来像:Types 如何让模块使用者在Elm中定义类型,types,elm,Types,Elm,我在Elm项目中创建了一个表模块 每个列都有一个getter函数,该函数定义了它们如何从为行建模的记录中检索数据 因此,一行可能看起来像: { name = "bananas" , price = 5 } 这些列可以如下所示: [ { title = "Item Name" , get = .name } , { title = "Price in pennies" , get = .price >> (*) 100 >> toString } ] t
{ name = "bananas"
, price = 5
}
这些列可以如下所示:
[ { title = "Item Name"
, get = .name
}
, { title = "Price in pennies"
, get = .price >> (*) 100 >> toString
}
]
type alias Column a =
{ get : a -> String
, title : String
}
type alias Columns a =
List (Column a)
viewTable : Columns a -> List a -> Html msg
这意味着列get
函数的类型注释为:
行->字符串
我遇到的问题是,我想让这个表模块成为具有自己的“行”类型的其他项目的可重用组件。如何允许模块使用者指定行类型别名而不删除所有类型批注
我对Elm很陌生,因此如果我问题中的措辞不正确,很抱歉。您可以引入类型变量(通常是
a
,但任何小写名称都可以,例如中的data
)
然后,您可以创建如下内容:
[ { title = "Item Name"
, get = .name
}
, { title = "Price in pennies"
, get = .price >> (*) 100 >> toString
}
]
type alias Column a =
{ get : a -> String
, title : String
}
type alias Columns a =
List (Column a)
viewTable : Columns a -> List a -> Html msg
您可以引入一个类型变量(通常是
a
),而不是使用自己的类型,行
,但任何小写名称都可以,例如,中的数据
)
然后,您可以创建如下内容:
[ { title = "Item Name"
, get = .name
}
, { title = "Price in pennies"
, get = .price >> (*) 100 >> toString
}
]
type alias Column a =
{ get : a -> String
, title : String
}
type alias Columns a =
List (Column a)
viewTable : Columns a -> List a -> Html msg
看看哪一个为处理这个问题提供了一些抽象。有一个列
类型,允许您为每种类型创建自定义配置,以构建渲染值。看看哪一个为处理这个问题提供了一些抽象。有一个列
类型,允许您为每种类型创建自定义配置,以构建渲染值。