【问题标题】:Increase list size using list comprehension in erlang在 erlang 中使用列表理解增加列表大小
【发布时间】:2018-10-01 15:37:15
【问题描述】:

A = [1,2,3]

输出应该是:

[1,one,2,two,3,three]

有没有可能得到这样的输出?

【问题讨论】:

标签: erlang


【解决方案1】:

是的,您可以在推导式中放置两个子句,让第二个子句为第一个子句中的每个元素返回两个元素:

1> F = fun
1>   (1) -> "one";
1>   (2) -> "two";
1>   (3) -> "three"
1> end.
#Fun<erl_eval.6.127694169>
2> [B || A <- [1, 2, 3], B <- [A, F(A)]].
[1,"one",2,"two",3,"three"]

【讨论】:

  • 非常感谢!!所以需要某种映射或使用用户定义的函数来使这项工作正常吗?
  • @Abhay,当然!原子three 与整数3 没有内在关系。
【解决方案2】:

我认为最后一个代码的输出是

 [[1 ,"one"] , [2, "two"] , [3 , "tree"]].

一些正确的答案将是

  lists:append([begin T = case I of
                            1 -> "One" ;
                            2->"Two";
                            3->"Three"; 
                            _ -> "" end ,
                      [I ,T] end
               || I <- lists:seq(1,3)]).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2012-06-24
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多