究竟是什么#^:_ 1

the*_*rew 5 j

所以我在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,为什么它不是#的正确正面?

bob*_*bob 5

我相信,(#!._^:_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)

在这种情况下,复数参数的实部mjnm复制相应的右侧项,而虚部会插入n填充值。 http://www.jsoftware.com/help/dictionary/d400.htm