榆树中的范围表达式

rau*_*sch 9 elm

Elm支持[1..100],但是如果我尝试['a'..'z'],编译器会给我一个类型不匹配(期望一个数字,得到一个Char).有没有办法让这项工作?

And*_*ren 19

只需创建一系列数字并将其映射到字符:

List.map Char.fromCode [97..122]
Run Code Online (Sandbox Code Playgroud)

编辑或作为功能:

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
Run Code Online (Sandbox Code Playgroud)

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

charRange : Char -> Char -> List Char
charRange from to =
  List.map Char.fromCode <| List.range (Char.toCode from) (Char.toCode to)
Run Code Online (Sandbox Code Playgroud)

  • 在Elm 0.18中删除了`[..]`语法,所以现在你需要用`List.range ab`替换`[a ... b]`的任何实例.请注意,`List.range`的类型是`Int - > Int - > List Int`,因此它也不适用于字符. (5认同)