如果date也被用作块元素var,如何在foreach循环中将date作为参数引用?我是否有义务重命名我的日期变量?
f: func[data [block!] date [date!]][
foreach [date o h l c v] data [
]
]
答案 0 :(得分:4)
答:简单,撰写是你最好的朋友。
f: func[data [block!] date [date!]][
foreach [date str] data compose [
print (date)
print date
]
]
>> f [2010-09-01 "first of sept" 2010-10-01 "first of october"] now
7-Sep-2010/21:19:05-4:00
1-Sep-2010
7-Sep-2010/21:19:05-4:00
1-Oct-2010
答案 1 :(得分:2)
您需要从日期更改参数名称或将其指定给本地变量。
答案 2 :(得分:2)
您可以通过将函数规范中的日期字绑定到data参数来访问foreach循环中的date参数:
>> f: func[data [block!] date [date!]][
[ foreach [date o h l c v] data [
[ print last reduce bind find first :f 'date 'data
[ print date
[ ]
[ ]
>> f [1-1-10 1 2 3 4 5 2-1-10 1 2 3 4 5] 8-9-10
8-Sep-2010
1-Jan-2010
8-Sep-2010
2-Jan-2010
它使代码很难阅读。我认为最好将日期参数分配给函数内部的局部变量,如Graham建议的那样。
>> f: func [data [block!] date [date!] /local the-date ][
[ the-date: :date
[ foreach [date o h l c v] data [
[ print the-date
[ print date
[ ]
[ ]
>> f [1-1-10 1 2 3 4 5 2-1-10 1 2 3 4 5] 8-9-10
8-Sep-2010
1-Jan-2010
8-Sep-2010
2-Jan-2010