在J中,我可以根据某个谓词更新数组的子集,如下所示:
y (k}~) |. y {~ k =. I. '123' e.~ y =. '[1.2.3]'
[3.2.1]
Run Code Online (Sandbox Code Playgroud)
我意识到我可以在这里考虑一个连词,但是首先有更优雅的方法吗?这123
只是一个例子.具体来说,我想做的是:
k
)此外,重要的是动词作为一个整体在数组上运行,因为我主要想做的是置换和转换子数组.(因此|.
在示例中.)
有更简单的方法吗?
对此有一个或多或少的标准副词:
tweak =: (@:{) (`[) (`]) }
twist =: |. tweak
'123' (I.@:e.~ twist ]) '[1.2.3]'
[3.2.1]
Run Code Online (Sandbox Code Playgroud)
在这里,tweak
使用gerundial形式}
:
x
从阵列中y
使用{
.@{
.也就是说,{
选择,并 @:
要求动词应用于该选择; twist以|.
(反向)形式提供此动词.y
(由...表示]
)x
(由...表示[
).我会注意到几件事:
e.
本质上是无序的,但您的转换函数|.
仅关注订单.这本身没有任何问题,但在重新排序数组的部分(例如,考虑y=.'[1.1.1]'
)的背景下可能会令人困惑. 归档时间: |
|
查看次数: |
132 次 |
最近记录: |