当 foreach 中使用相同变量时,如何在 func 参数中引用变量

发布于 2024-09-17 21:04:45 字数 187 浏览 5 评论 0原文

如果 date 也用作块元素 var ,如何在 foreach 循环中将 date 作为 f 中的参数引用?我有义务重命名我的日期 var 吗?

f: func[data [block!] date [date!]][
    foreach [date o h l c v] data [

    ]
]

How can I refer to date as argument in f within the foreach loop if date is also used as block element var ? Am I obliged to rename my date var ?

f: func[data [block!] date [date!]][
    foreach [date o h l c v] data [

    ]
]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

萌酱 2024-09-24 21:04:45

A:简单,撰写是你最好的朋友。

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

A: simple, compose is your best friend.

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
猫弦 2024-09-24 21:04:45

您需要更改日期中的参数名称或将其分配给局部变量。

You need to either change the parameter name from date or assign it to a local variable.

昨迟人 2024-09-24 21:04:45

您可以通过将函数规范中的“日期”字绑定到数据参数来访问 foreach 循环内的日期参数:

>> 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

但这使得代码非常难以阅读。我认为最好按照格雷厄姆的建议将日期参数分配给函数内的局部变量。

>> 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

You can access the date argument inside the foreach loop by binding the 'date word from the function specification to the data argument:

>> 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

It makes the code very difficult to read though. I think it would be better to assign the date argument to a local variable inside the function as Graham suggested.

>> 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文