【问题标题】:'missing operator at _@_' when adding xdata to RBC graph element将 xdata 添加到 RBC 图形元素时,“_@_ 处缺少运算符”
【发布时间】:2015-08-10 13:46:51
【问题描述】:

我目前正在学习如何使用 rbc 库。我有一些硬件返回两个列表:一个是时间,另一个是电压。这是我尝试创建元素的 tcl 行:

    $myGraph element create "CH${channel}:${polarity}" -xdata [list [lindex [lindex $myWaveform 2] 0]] -ydata [list [lindex [lindex $myWaveform 2] 1]]

注意:我使用了两次lindex,因为它是一个列表列表,我需要索引到第一个列表才能获取我的数据。

现在,在执行此代码时,我收到以下错误消息:

missing operator at _@_
in expression "1.9e-8 _@_1.902e-8 1.904e-8 1.90..."

现在,我会在此处发布我的列表,但它非常庞大(>4000 个元素)。但基本上你在错误的sn-p中看到的是列表的格式:

"1.9e-8 1.902e-8 1.904e-8 1.90..."

现在,我知道传入的数据是 list 类型的,这就是我要查找的数据,因为我已经对其进行了 llength 函数,它是一个包含 4000 个元素的列表。我不确定它从哪里获取“操作员”,因为列表中没有任何内容位于错误中的“@”位置。我的清单可能有什么问题?

编辑:当我通过控制台手动执行此过程时,它可以工作。为什么它不能在代码中工作?

【问题讨论】:

  • 该列表很可能在某个时候传递给 expr 命令:它给出了错误消息 f.i.当它得到这样的值列表时。另外,你真的不需要[lindex [lindex $myWaveform 2] 0][lindex $myWaveform 2 0] 就可以了。
  • 我将如何格式化我的列表以便它不会引发此错误?我无法将 rbc 库重写为非用户 expr
  • 如果您的数据通过expr,它必须由一个表达式组成,即一个值或由运算符连接的多个操作数。您确定该命令需要一个值列表吗? (我对rbc一无所知。)
  • 我在下面对我自己的问题的回答中发布了解释。虽然它期待一个 >1 个值的列表,但它只得到一个 1 的列表。

标签: list graph tcl operator-keyword


【解决方案1】:

我发现了问题所在。出于某种原因,我用来获取数据的函数将其放入大小为 1 的列表中,其中第一个元素是我的实际数据列表,大小为 4000:

{{"1.9e-8 1.902e-8 1.904e-8 1.90..."}}

因为它试图迭代这个大小为 1 的列表,所以它遇到了错误。

【讨论】:

  • 这是有道理的:它将获得的列表中的每个元素传递给expr,如果它获得的每个值都被塞进一个元素中,那就是传递的内容。也许您正在围绕提供数据的函数调用list?在您的第一个示例中,您围绕-xdata-ydata 的值调用list,这看起来很可疑。
  • 我之前没看到...你所拥有的基本上是一个元素列表,其中包含一个元素列表,该列表由一个值列表组成。
  • @PeterLewerin 我想这是有道理的。我用来获取数据的库允许捕获多个数据集,但我只将它用于一个。因此,如果我有 >1 个数据集,“顶部”列表的长度将是 >1
猜你喜欢
  • 2018-01-17
  • 2021-12-26
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多