我想知道在使用 APL 时是否应该大量使用each运算符,还是应该尝试为给定问题找到另一种解决方案?
在 APL 中如何优化此运算符的使用?
而不是写类似的东西
1 +" 2 x" 3|" (1 2 3) (4 5 6) // sorry, no apl chars
我会写
{1 + 2 x 3 | omega}" (1 2 3) (4 5 6)
或者
foo" (1 2 3) (4 5 6)
其中 foo 包含计算。
换句话说,当功能可以组合时,避免链接连续的每个操作。Dyalog DFN {...} 提供了一种很好的方式来实现这一点。
但最重要的是,我会首先尝试以最自然的方式解决问题,而不考虑是否存在运行得更快的解决方法。如果解决方案足够好,也就是说,它运行良好,并且您和您的同事将来某个时候能够理解它,我会不理会它。
在大多数情况下,each 的性能不如不使用 each 的数组解决方案,但有时它是编写复杂表达式的最简单和最清晰的方法。但是,如果有两种方法可以完成大致相同的清晰度和复杂性的任务,并且不使用每种方法,我会倾向于选择那一种。如果它很重要,当然,仪器和测量。除非这适用于相当大的数据,否则它很可能无关紧要。上面对每个用于调用长期运行操作或外部服务的评论是准确的。