【发布时间】:2017-08-27 16:14:43
【问题描述】:
Elm 支持[1..100],但如果我尝试['a'..'z'],编译器会给我一个类型不匹配的信息(期望一个数字,得到一个字符)。有什么办法可以做到这一点?
【问题讨论】:
标签: elm
Elm 支持[1..100],但如果我尝试['a'..'z'],编译器会给我一个类型不匹配的信息(期望一个数字,得到一个字符)。有什么办法可以做到这一点?
【问题讨论】:
标签: elm
只需创建一个数字范围并将其映射到字符:
List.map Char.fromCode [97..122]
编辑,或作为函数:
charRange : Char -> Char -> List Char
charRange from to =
List.map Char.fromCode [(Char.toCode from)..(Char.toCode to)]
charRange 'a' 'd' -- ['a','b','c','d'] : List Char
编辑,从 elm 0.18 起,List.range 终于是一个函数了:
charRange : Char -> Char -> List Char
charRange from to =
List.map Char.fromCode <| List.range (Char.toCode from) (Char.toCode to)
【讨论】:
[ .. ] 语法在 Elm 0.18 中被删除,所以现在你需要用 List.range a b 替换 [a .. b] 的任何实例。注意List.range 的类型是Int -> Int -> List Int,所以它也不适用于字符。