d我想返回map
文档:
import std.algorithm.comparison : equal;
import std.conv : to;
alias stringize = map!(to!string);
assert(equal(stringize([ 1, 2, 3, 4 ]), [ "1", "2", "3", "4" ]));
我想返回如下函数:
float[] function(float[]) get_map(alias f){
return map!(f)
}
map
返回隐藏
类型:
auto mapped(alias f, Range) (Range range) {
import std.algorithm : map;
return range.map!f();//map.
}//要用`auto`.
void main() {
auto r = [1, 2].mapped!(i => 10 * i);
import std.algorithm;
assert(r.equal([10, 20]));
}
需要区间和函数
:
float my_function(float x){ return 2*x;}
auto my_function_mapped = mapped(my_function);
assert(my_function_mapped([1.,2.,3.]) == [2.,4.,6.]);
要具体的区间,可以用.数组
方法:
float[] get_map(alias f)(float[] input){
import std.algorithm : map;
import std.array : array;
return input.map!(f).array;//这里
}
也可用同名模板:
template mappified(alias func) {
import std.algorithm : map;
alias mappified = map!func;
}//
void main() {
import std.stdio;
writeln([1,2].mappified!(a => a * 10));
}
std.functional
包含函数组合工具:这里
惯用D方式:
float times_two(float x) {return 2*x;}
// 确保结果为数组
float[] times_two_array(float[] arr) {
import std.algorithm; // for map
import std.array; // for array
return arr
.map!times_two // 映射函数
.array; // 转为数组
}
void main() {
import std.stdio;
import std.algorithm; // for map
alias map2x = map!times_two;
writeln(map2x([1., 2., 3.]));
float[] arr2 = times_two_array([1., 2., 3.]);
writeln(arr2);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现