2016-07-05 20 views
8

Elm支持[1..100],但是如果我尝试['a'..'z'],编译器会给我一个类型不匹配(需要一个数字,得到一个Char)。有什么办法做这项工作?Elm中的范围表达式

回答

17

只需创建一个数字范围,并将其映射到字符:

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 

编辑,从榆树0.18及以上List.range最后是一个函数:

charRange : Char -> Char -> List Char 
charRange from to = 
    List.map Char.fromCode <| List.range (Char.toCode from) (Char.toCode to) 
+2

Elm 0.18中删除了'[..]'语法,所以现在您需要用'List.range a b'替换'[a .. b]'的任何实例。注意'List.range'的类型是'Int - > Int - > List Int',所以它也不能用于字符。 –