在D语言中,in操作符只能用于关联数组,而不能用于普通数组。因此,在array_column函数中,需要将row转换为关联数组才能使用in操作符,可以使用std.array.toAssocArray函数进行转换。修改后的代码如下:

import std.stdio;
import std.algorithm;
import std.array;

T[] array_column(T, U)(T[U][] array, U key)
{
    T[] result;
    foreach (row; array)
    {
        auto assocRow = row.toAssocArray();
        if (key in assocRow.keys)
        {
            result ~= assocRow[key];
        }
    }
    return result;
}

void main()
{
    string[string][] one = [ ['name':'chenfa','age':'33'],['name':'tanlili','age':'44'] ];
    writeln(array_column(one,'name'));
}

输出结果为:

['chenfa', 'tanlili']

另外,也可以使用std.algorithm.map函数来实现该功能,代码如下:

import std.stdio;
import std.algorithm;
import std.array;

auto array_column(T, U)(T[U][] array, U key)
{
    return array.map!(row => row[key])
                .filter!(v => v !is null);
}

void main()
{
    string[string][] one = [ ['name':'chenfa','age':'33'],['name':'tanlili','age':'44'] ];
    writeln(array_column(one,'name'));
}

输出结果同样为:

['chenfa', 'tanlili']
D语言代码实现array_column函数 - 获取二维数组中指定列的值

原文地址: https://www.cveoy.top/t/topic/oidM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录