在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语言代码import stdstdio;import stdalgorithm;T array_columnT UTU array U key T result; foreach row; array if key in rowkeys result ~= rowkey; return re

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

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