药剂字符范围

 小麻雀yuuri 发布于 2023-02-08 16:25

我和Range一起玩Elixir.
它工作正常:

>1..10 |> Enum.map fn(x) -> x |> IO.puts end
>1
>..
>10
>[:ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok]

但这里有错误:

>'a'..'z' |> Enum.map fn(x) -> x |> IO.puts end
 ** (Protocol.UndefinedError) protocol Range.Iterator not implemented for 'a'
 /Users/elix_lang/lib/elixir/lib/range.ex:7: Range.Iterator.impl_for!/1

我来自Ruby熟悉,Erlang
我想了解问题是什么?
谢谢!!!

2 个回答
  • 关于第一个,我认为如果你只想迭代范围,可以使用Enum.each.

    iex(1)> 1..10 |> Enum.each fn(x) -> IO.puts(x) end
    iex(2)> 1..10 |> Enum.each &IO.puts(&1)
    1
    2
    ...
    :ok
    

    关于第二个选项,一个选项可能如下(尽管可能有更好的方法).

    iex(3)> ?a..?z |> Enum.each &IO.puts(String.from_char_list!([&1]))
    a
    b
    ...
    :ok
    
    iex(4)> ?a..?z |> Enum.map(&String.from_char_list!([&1])) |> IO.puts
    abcdefghijklmnopqrstuvwxyz
    :ok
    

    [2.3字符串(二进制)和字符列表(列表)]在下面介绍了一些字符列表(?a等) http://elixir-lang.org/getting-started/binaries-strings-andchar -lists.html

    2023-02-08 16:27 回答
  • 提供的答案不再适用于elixir 1.4.1,因为不推荐使用String.from_char_list/1.您现在可以生成如下字符列表:

    ?a..?z
    |> Enum.to_list
    |> List.to_string
    

    2023-02-08 16:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有