Stack 因子中的字签名
我尝试迭代一个包含天气数据的数组。这已经很好了,我还可以从数组中加载对我来说很重要的数据。因此,我写了一个帮助词,看起来像这样:Stack 因子中的字签名,stack,factor-lang,Stack,Factor Lang,我尝试迭代一个包含天气数据的数组。这已经很好了,我还可以从数组中加载对我来说很重要的数据。因此,我写了一个帮助词,看起来像这样: :获取值(hsh str--str)在*处交换 [“main”获取值“temp”获取值]每9[+]次 此代码从堆栈上的数组中推送温度值,并构建总和。“main”和“temp”是数组的键值 我使用以下命令执行它:get weather list生成数组 “维也纳”获取天气列表[“主”获取值“临时”获取值]每9[+]次 结果是堆栈上的一个数字。现在我想把这个电话分成一两个
:获取值(hsh str--str)在*处交换代码>
[“main”获取值“temp”获取值]每9[+]次
此代码从堆栈上的数组中推送温度值,并构建总和。“main”和“temp”是数组的键值
我使用以下命令执行它:get weather list生成数组
“维也纳”获取天气列表[“主”获取值“临时”获取值]每9[+]次
结果是堆栈上的一个数字。现在我想把这个电话分成一两个字。例如:
:获取天气信息(城市--str)
获取天气列表
[“主”获取值“临时”获取值]每9[+]次代码>
问题是我不太理解这个词的签名。我总是得到“每个”的输入报价与预期效果不匹配”。我试了很多,但找不到解决这个问题的方法。谁能有个主意?我非常感谢您的帮助:)
干杯
Stefan这是一个非常古老的问题,但它可能对某些人仍然有用
首先,关于每个
:引号的堆栈效应是(…x…)
这意味着它消耗一个输入,而不输出任何东西。你的引语对解释器起了作用,因为它可以让你避开“错误”的代码。但是,对于从定义的单词调用每个单词,您的引用不能输出任何内容
因此,每一个
都不是你想要的。如果您试图将数量可变的值推送到堆栈中,您将再次遇到同样的问题。序列字都输出固定数量的值
您要做的是以下两件事之一:
用所需的值创建一个新序列,然后对其调用sum
在处理列表时,使用类似于“减少”
的方法来累积总和
例如,使用reduce
:
get-weather-list 0 [ "main" get-value "temp" get-value + ] reduce ;