动词链''-:]
按照我期望的方式工作。
(''-:])''
1
(''-:])'non-empty'
0
它也按照我期望的动态电源连接方式工作。
'empty'[^:(''-:])''
empty
'empty'[^:(''-:])'non-empty'
non-empty
动词短语''&-:
产生相同的结果,正如我所期望的。
(''&-:)''
1
(''&-:)'non-empty'
0
当我尝试将 ''&-:
与动态幂连词一起使用时,J 产生域错误,我不明白为什么。此用例与所有其他用例有什么区别?
'empty'[^:(''&-:)''
|domain error
| 'empty' [^:(''&-:)''
'empty'[^:(''&-:)'non-empty'
|domain error
| 'empty' [^:(''&-:)'non-empty'
“域错误”行下方的消息是否试图告诉我任何具体信息?
我的实际用例是用另一个字符串替换空字符串。如果有人有任何更好的方法建议,我将不胜感激。
最佳答案
好问题,让我深入研究了 (^:)
Power Conjunction https://code.jsoftware.com/wiki/Vocabulary/hatco#Common_Uses_2 的 Nuvoc 引用资料。
我指的是 Nuvoc,因为这是现在使用的引用而不是 J 词汇表。
据我所知,问题是您有一个二元函数(您的参数是 'empty'
和 ''
),并且您试图强制它让你的测试成为一元 (''&-:)
'empty'[^:(''&-:) ''
|domain error
| 'empty' [^:(''&-:)''
当您没有正确数量的参数或您使用的参数类型不合适时,通常会出现域错误。
如果我们将您的测试更改为 fork ('' -: ])
它会起作用,因为现在 x 和 y 参数得到了适当的处理。 ]
选择 y 参数,左侧的名词不需要参数。
'empty'[^:(''-:]) '' NB. turn the test into a fork
empty
另一种有效的方法是使用 "_
将 x 参数更改为动词,这会创建一个无限等级的动词,并且在调用时将返回您期望的结果。这再次摆脱了解决了二元一元混淆的问题,以便您原来的测试现在可以工作。需要使用 empty"_
两边的括号将强力连词 ^:
与动词分开。
('empty'"_) ^:(''&-:) '' NB. turn the x argument into a verb
empty
您可能采取的其他方法是查看 Amend 副词 }
https://code.jsoftware.com/wiki/Vocabulary/curlyrt#dyadic
关于j - 为什么两个相似的 J 动词短语可以起作用,但只有一个与动态强力连词一起起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59739015/