elixir - 反转和连接列表
问题描述
将列表的反向版本连接到原始列表的最惯用的方法是什么?所以:
Input: [1, 2, 3], which is the output of my_func()
Output: [1, 2, 3, 3, 2, 1]
可以通过一种不太惯用的方式来实现这一点,如下所示:
n = my_func() # returns e.g. [1, 2, 3]
n_reversed = Enum.reverse(n)
n_combined = Enum.concat(n, n_reversed)
我正在考虑这样的事情(不起作用):
my_func() |> Enum.concat(Enum.reverse(&(&1)))
这个解决方案确实有效,但对我来说看起来不是很地道:
n |> Enum.reverse() |> (fn enum -> Enum.concat(n, enum) end).()
你知道实现这一目标的惯用方法吗?
解决方案
我会说使用++
运算符而不是Enum.concat
. (请注意,++
要求参数是列表,而Enum.concat
接受任何类型的可枚举。)
n_combined = n ++ Enum.reverse(n)
推荐阅读
- swift - 如何使用 Swift 在 macOS 中获取 cpu 使用率?
- reactjs - 奇怪的 React 编译器行为
- java - 尝试将 Hibernate 连接到 Azure MySQL 服务器。收到错误“无法为连接 URL 创建类 'com.mysql.jdbc.Driver' 的 JDBC 驱动程序”
- ansible - jinja2:检查字典是否包含列表中的任何项目
- css - 带有 CSS 的横向文本块
- python - Django 2.0 中这些 LoginRequiredMixin 属性的用途是什么?
- python - ImportError:安装pymongo,python 2.7时没有名为parse的模块
- c++ - arduino中的多个按钮按下管理
- php - 在 php 对象中,为什么静态变量只能用 :: 表示法访问,而静态方法可以从 :: & -> 中调用
- bash - 使用 awk 更改最后一条记录分隔符