在Elm中,我有时会发现自己通过使用只有一个构造函数的union类型来定义记录类型。然后我使用只有一个案例的case语句来解压缩记录字段:
type Model =
Model { stack: List Int }
update msg model =
case model of
Model { stack } ->
...
有没有更短的解压方法?单个案例看起来有点愚蠢。它会导致不必要的缩进和冗长。
另外:我在处理程序中的中央数据结构时使用type
而不是type alias
更明确地说明了这一点(通常只有少数字段并且只能用于程序中很少有地方,所以额外的冗长不是 很多问题)。放弃这种方法并尽可能使用类型别名来记录是不是更好的风格?
答案 0 :(得分:4)
您可以在函数签名中进行模式匹配:
update msg (Model model) =
model.stack ...
或者,如果您想直接使用stack
:
update msg (Model { stack }) =
...
至于你是否应做这类事情?我曾经在明确尝试隐藏模型中的实现细节时使用过它。你只需要愿意处理它不可避免地引入的额外冗长。你真的需要决定是否有必要。除非有明确的需要,否则我可能会倾向于避免它。