J语言中如何在嵌套动词中使用局部变量?
J语言嵌套动词访问局部变量的问题
我编写了如下J语言代码:
succession =: monad define greg =. 1 2 3 tom =. {{ greg }} tom y )
调用succession 'season 1'时触发错误,错误信息如下:
|noun result was required: tom | greg
我判断问题原因是:嵌套动词tom的命名空间无法访问外层定义的局部变量greg,导致greg被识别为动词,而动词不能作为动词的返回值,因此报错。
我想到两种解决方案,但都存在明显缺陷:
- 用
=:替代=.将greg存入全局环境,这种方式很容易引发意外错误。 - 将
greg作为左参数传递给tom,写法繁琐冗余,若tom需要访问更多局部变量(如kendall、shiv、roman),代码会变得更加混乱。
内容的提问来源于stack exchange,提问作者Pig
相关产品推荐
相关产品推荐

