【问题标题】:Range expressions in ElmElm 中的范围表达式
【发布时间】:2017-08-27 16:14:43
【问题描述】:

Elm 支持[1..100],但如果我尝试['a'..'z'],编译器会给我一个类型不匹配的信息(期望一个数字,得到一个字符)。有什么办法可以做到这一点?

【问题讨论】:

    标签: elm


    【解决方案1】:

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

    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 -&gt; Int -&gt; List Int,所以它也不适用于字符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多