PineScript中定义map数组作为库函数参数的实现咨询
PineScript中map数组作为库函数参数的实现方案
核心结论
可以直接在PineScript中定义map<string, string>类型的数组,并将其作为库函数的参数,无需通过自定义type包装,只需遵循正确的类型声明语法即可。
正确的函数签名与完整实现
你之前的array_of_maps_to_json函数签名存在语法错误,正确的写法是将数组类型声明为simple array<map<string, string>>,修正后的完整代码如下:
// @function Converts map of strings to a flat JSON string. // @param data The map of key value pairs. // @returns JSON string for simple map. export dict_to_json(simple map<string, string> data) => simple string [] arr = array.new_string() for [key, val] in data array.push(arr, "\"" + key + "\":\"" + val + "\"") "{" + array.join(arr, ",") + "}" // @function Converts array of maps to an JSON array string. // @param data The array of map of key value pair strings. // @returns JSON array string for array of simple maps. export array_of_maps_to_json(simple array<map<string, string>> data) => simple string [] arr = array.new_string() for data_point in data array.push(arr, dict_to_json(data_point)) "[" + array.join(arr, ",") + "]"
使用示例
调用时直接创建map<string, string>数组即可,无需额外包装:
// 创建测试用map实例 data1 = map.new<string, string>() map.set(data1, "name", "Alice") map.set(data1, "age", "30") data2 = map.new<string, string>() map.set(data2, "name", "Bob") map.set(data2, "age", "25") // 创建map类型的数组 simple array<map<string, string>> mapArray = array.new<map<string, string>>() array.push(mapArray, data1) array.push(mapArray, data2) // 转换为JSON数组字符串 jsonResult = array_of_maps_to_json(mapArray)
对比临时方案的优势
你之前用自定义type包装map的方案虽能运行,但存在冗余:
- 直接使用
array<map<string, string>>更简洁,省去了额外的类型定义和属性访问(如data_point.dict) - 符合PineScript原生集合类型的声明规范,代码可读性与维护性更高
内容的提问来源于stack exchange,提问作者elaspog
相关产品推荐
相关产品推荐

