elm - 访问二维数组 Elm 中的元素
问题描述
如何使用 Array.get 获取此数组中的某些元素?
首先我有一个二维列表:
node = [['X',' ',' '],['O','O',' '],['X',' ',' ']]
-- so node is a [['X','X',' '],[' ',' ',' '],[' ',' ',' ']] : List (List Char)
我将它转换为二维数组,所以我得到:
Array.fromList [Array.fromList ['X','X',' '],Array.fromList [' ',' ',' '],Array.fromList [' ',' ',' ']] : Array.Array (Array.Array Char)
虽然附注:为什么repl给我,而不是仅仅将其报告为[['X','X',''],['','',''],['','',' ']] : Array.Array (Array.Array Char) ? 只是想知道,认为这很奇怪。
所以现在节点是一个二维数组而不是一个列表。
现在,如果我想访问[0][1]
2D 数组中 say 位置的值,那么'X'
第一行中的第二个(所以这是索引 1)2D 数组,我该怎么做get
呢?
一旦我弄清楚如何做到这一点,那么我将需要弄清楚如何更新该位置,例如将 X 更改为 O 或将空位置更改为 X 或 O
是我还是只是想在 elm 中使用 2D 列表或 2D 数组只是一个巨大的 PITA?
解决方案
是我还是只是想在 elm 中使用 2D 列表或 2D 数组只是一个巨大的 PITA?
链表是函数式语言中更常见的结构,大多数关于算法的推理都是基于它们的,这就是为什么使用经典数组有时会很乏味(选择是查看应用程序的结构并使列表适合这个结构体)。
关于这个问题,假设你有这样一个功能:
arrayNode : Array.Array (Array.Array Char)
arrayNode = Array.fromList [Array.fromList ['X','X',' '],Array.fromList [' ',' ',' '],Array.fromList [' ',' ',' ']]
要0
在此数组中获取一行Array.get函数,可以使用:
Array.get 0 arrayNode
据我了解,困难在于Maybe (Array.Array Char)
返回类型,所以我们不能Array.get
马上再使用一次。
我们可以使用case
表达式检查结果是否为Just (Array.Array Char)
or Nothing
,但实际上有Maybe.andThen函数,可以简化代码:
Array.get 0 arrayNode |> Maybe.andThen (Array.get 1)
结果Just 'X'
如预期的那样
推荐阅读
- matlab - 如何在不使用内置函数的情况下在 Matlab 上创建自己的卷积代码
- python - IPython nbwidgets:通过单击按钮切换可见性
- c++ - 从未使用过的无效默认成员初始值设定项
- python - 如何将同一列中的列附加到以相似名称结尾的不同行中
- entity-framework-core - Unable to create an object of type 'MyDbContext'. Add an implementation of 'IDesignTimeDbContextFactory
' - python-3.x - Value error when populating a new column in a dataframe based on conditional values
- javascript - 如何防止 Firebase 记录中的重复
- agda - 在 isSet 类型中构造带有约束的正方形
- java - 查询创建 Spring Data JPA
- python-3.x - 评估 tf.keras.model 输出之间的成对距离