如何替换深度嵌套但任意的数据结构中的值?

约翰·奥

我有一个任意的数据结构。形式通常是相似的,因为它由大约四个级别的数组和哈希组成,我想更改大约两个到六个值。一个典型的例子:

$VAR1 = [
          undef,
          [
            {
              '0' => 'some string'
            }
          ],
          undef,
          [
            undef,
            {
              '1033' => 'another string '
            }
          ]
        ];

尽管我对语法非常了解,可以在特定示例(或任何其他示例)中访问这两个值并进行更改,但是从一种用法到另一种用法,这将以硬编码表达式失败的方式发生变化。

感觉它应该是一个递归运行的简单子,但是一旦发现数据结构的元素是数组或哈希,我不知道如何通过引用将元素传递到下一个递归调用中,这样可以以非临时方式进行修改。以下代码递归失败(尽管如果不递归,则可以更改顶级数组中的浅值,并且此更改会生效):

sub deep_nested_replace {
    my ($d, $string) = @_;

    if (ref($d) eq 'ARRAY') {
        for (my $i=0; $i<scalar @$d; $i++) {
            deep_nested_replace($d->[$i], $string);
        }
    }
    elsif (ref($d) eq 'HASH') {
        foreach my $k (keys %$d) {
            deep_nested_replace($d->{$k}, $string);
        }
    }
    elsif (defined $d) {
        $d = $string;
    }
}

我该如何工作?如果这是错误的方法,那么正确的方法是什么?

山姆

@_具有函数参数数组包含传递给函数的标量(或其他显式引用)的别名。对其进行修改影响呼叫者数据。$_ingrepin相同map这是您有时需要注意的其他编程语言所带来的影响。

但是,如习惯用法那样,通过将一个标量变量分配给另一个变量my ($d, $string) = @_,将标量值从一个变量复制到另一个变量。

如果要影响传递给调用程序中函数的标量值,则可以直接使用@_数组及其元素。

sub deep_nested_replace {
    my ($d, $string) = @_;

    if (ref($d) eq 'ARRAY') {
        deep_nested_replace($_, $string) for @$d;
    }
    elsif (ref($d) eq 'HASH') {
        deep_nested_replace($_, $string) for values %$d;
    }
    elsif (defined $d) {
        $_[0] = $string;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Haskell | 如何从深度嵌套的数据结构中获取值?

节点js,替换嵌套数据结构中的出现

任意深度的Haskell递归HashMap数据结构

在Golang中深度复制数据结构

如何访问嵌套数据结构中的数据?

如何从嵌套数据结构中检索基于谓词/条件的特定属性值的平面数组?

Go中的任意JSON数据结构

如何使用 Python 在深度嵌套的结构中收集特定值

如何从具有任意深度的深度嵌套的Hashtable中检索值?

替换嵌套结构火花数据框中的列值

图数据结构中的节点值

在Go中迭代任意可迭代的数据结构

如何从 Python 中的嵌套数据结构中提取特定数据

如何在Karate中为数据驱动的测试准备嵌套的数据结构?

如何为诸如Python中的数据之类的时间序列构建嵌套的Dictionary类型数据结构?

以任意深度提取嵌套json数据中的所有键

如何在Clojure脚本数据结构中搜索和替换?

如何在Python中确定嵌套数据结构的类型?

如何在Clojure中的深层嵌套数据结构(向量和列表)中找到索引?

如何在嵌套方法定义中引用对象数据结构?

如何在 C# 中解析嵌套的 JSON 数据结构

如何在Python 3中解析此嵌套字典数据结构?

如何从嵌套的 json 中提取字段并保存在数据结构中

如何基于嵌套的数据结构列表构建 HTML 表格?

如何在Elixir中使用嵌套数据结构

如何解析嵌套的JSON数据结构

如何使用 Pydantic 验证复杂的嵌套数据结构?

如何使用Javascript从值数组中获取深度嵌套的对象结构

在嵌套数据结构中查找首次出现的路径