我想采用List或Array,并在集合中给出两个元素,获取它们之间的所有元素。但我想以循环的方式做到这一点,例如[1;2;3;4;5;6]
,如果我要求介于4和2之间的元素,我可以回到[5;6;1]
获取F#集合中两个元素之间的元素
正在习惯于命令式编程我可以轻松地做到这一点循环,但我想在F#中可能有更好的惯用方法。
编辑
这里是我想出了一个办法,在找到一个Array.indexed功能
let elementsBetween (first:int) (second:int) (elements: array<'T>) =
let diff = second - first
elements
|> Array.indexed
|> Array.filter (fun (index,element) -> if diff = 0 then false
else if diff > 0 then index > first && index < second
else if diff < 0 then index > first || index < second
else false
这种做法只会使用数组显然但这似乎还不错。我有一种感觉,我可以通过用模式匹配替换if/then/else来清理它,但不知道如何干净地做到这一点。
您需要提供您的尝试。虽然我们大多数人都可以轻松回答这个问题,但您需要展示自己的努力。因此,我正在给这个投票。 –
重复的情况下会发生什么?如果没有找到其中一个极限值会怎么样? –
谢谢你展示你的尝试。我扭转了我的投票。 –