2016-07-05 26 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',所以它也不能用於字符。 –