List 更新列表中的特定项

List 更新列表中的特定项,list,elm,List,Elm,给出一个elm列表,如: twoDimensionalList = [ [ 'U', 'U', ' ' ] , [ ' ', ' ', ' ' ] , [ ' ', ' ', ' ' ] ] 如何使用Elm列表中的'U'更新第一行中的'?我不想使用数组,我想知道如何使用列表来实现这一点。我已经完成了将列表转换为数组和使用集。我试图学习这次如何在列表中的某个元素进行更新 我开始考虑如何做到这一点,但就是无法做到: row1 = take 0 twoDimen

给出一个elm列表,如:

twoDimensionalList =
    [ [ 'U', 'U', ' ' ]
    , [ ' ', ' ', ' ' ]
    , [ ' ', ' ', ' ' ]
    ]
如何使用Elm列表中的
'U'
更新第一行中的
'
?我不想使用数组,我想知道如何使用列表来实现这一点。我已经完成了将列表转换为数组和使用集。我试图学习这次如何在列表中的某个元素进行更新

我开始考虑如何做到这一点,但就是无法做到:

row1 =
   take 0 twoDimensionalList

row1Updated =
   indexedMap \i row1 -> if i == 2 then --somehow update this item in the map with 'U'

对于这个特定场景,我只需在列表上进行模式匹配,将我想要保留的部分绑定到变量,然后用替换值重新构建它:

case twoDimensionalList of
    [ a, b, _ ] :: tail ->
        [ a, b, 'U' ] :: tail

    _ ->
        twoDimensionalList
基本上,
操作符(称为“cons”)将匹配或绑定左侧的第一个元素(称为“head”),以及右侧的列表的其余部分(“tail”)。因此
“a”::[“b”,“c”]
将匹配列表
[“a”,“b”,“c”]

模式中的列表文字语法(
[…]
)将与该大小的列表完全匹配。因此,
[a,b,_]::tail
将匹配一个列表,第一个(“head”)元素本身是一个三元素列表,其中前两个元素绑定到变量
a
b
,而我们将要替换的第三个元素将被忽略。然后将外部列表的其余部分绑定到
tail


然后使用几乎相同的语法重构列表。我相信您一定熟悉列表文字语法,cons运算符(
)的工作原理与它的模式形式类似,将左侧的元素添加到右侧的列表中,例如
“a”::[“b”,“c”]
将返回列表
[“a”,“b”,“c”]

对于这个特定的场景,我只需要在列表上进行模式匹配,将我要保留的部分绑定到变量,然后用替换值重新构建它:

case twoDimensionalList of
    [ a, b, _ ] :: tail ->
        [ a, b, 'U' ] :: tail

    _ ->
        twoDimensionalList
基本上,
操作符(称为“cons”)将匹配或绑定左侧的第一个元素(称为“head”),以及右侧的列表的其余部分(“tail”)。因此
“a”::[“b”,“c”]
将匹配列表
[“a”,“b”,“c”]

模式中的列表文字语法(
[…]
)将与该大小的列表完全匹配。因此,
[a,b,_]::tail
将匹配一个列表,第一个(“head”)元素本身是一个三元素列表,其中前两个元素绑定到变量
a
b
,而我们将要替换的第三个元素将被忽略。然后将外部列表的其余部分绑定到
tail


然后使用几乎相同的语法重构列表。我相信您熟悉列表文字语法,cons运算符(
)的工作原理与它的模式形式类似,将左侧的元素添加到右侧的列表中,例如
“a”::[“b”,“c”]
将返回列表
[“a”,“b”,“c”]

哇,这让我迷路了,我以前从未使用过任何一种方法,例如模式匹配、语法等。嗯,看起来Elm指南掩盖了这一部分。不过这里有一点关于它的内容:。这里:文档浏览了很多:)。每个人都告诉你Elm很简单,但这并不是说你对ML语言和Elm是新手。与大多数其他ML语言相比,它很简单,但仍然掩盖了许多有用的(与“严格必要的”)概念:)我已经详细地回答了这个问题。希望有帮助!哇,这让我迷路了,我以前从来没有用过,比如模式匹配,语法等等。嗯,看起来《榆树指南》掩盖了这一部分。不过这里有一点关于它的内容:。这里:文档浏览了很多:)。每个人都告诉你Elm很简单,但这并不是说你对ML语言和Elm是新手。与大多数其他ML语言相比,它很简单,但仍然掩盖了许多有用的(与“严格必要的”)概念:)我已经详细地回答了这个问题。希望有帮助!