所以我在j网站上遇到了这段代码:
mask #!.fill^:_1 lst
Run Code Online (Sandbox Code Playgroud)
其中mask是一个位列表.
尽可能有意义.结果是掩码的正面,应用于lst,未知值替换为fill.
但是,它似乎没有概括:
2 2 (#!._^:_1) 3 3 4 4
Run Code Online (Sandbox Code Playgroud)
产生域错误,而不是"3 4",如您所料.
究竟是什么#^:_ 1,为什么它不是#的正确正面?
我相信,(#!._^:_1)
如果位置为 1,则通过获取索引值;如果位置为 0,则通过填充值填充,从而展开正确的参数。
(1 1 0 1 0 1) (#!._^:_1) 3 3 4 4
3 3 _ 4 _ 4
Run Code Online (Sandbox Code Playgroud)
它不能完全概括,因为 1 或 0 以外的值将导致您看到的域错误。请参阅本词典页面上的案例 6。http://www.jsoftware.com/help/dictionary/d202n.htm
您还可以查看复数与 # 的标准(非逆向)版本交互的方式,因为这似乎更具有普遍性。
2j1 #!._ 3 3 4 4
3 3 _ 3 3 _ 4 4 _ 4 4 _
2j1 1j2 3j0 1j1 #!._ 3 3 4 4
3 3 _ 3 _ _ 4 4 4 4 _
Run Code Online (Sandbox Code Playgroud)
在这种情况下,复数参数的实部mjn
会m
复制相应的右侧项,而虚部会插入n
填充值。
http://www.jsoftware.com/help/dictionary/d400.htm