You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:12:54