f# - 在数组中搜索 2 个相邻的值

标签 f# functional-programming

我正在研究我在 C# 中解决的问题的解决方案,但现在我正在将我的代码移植到 F#。我有一个字节数组,我需要在这个数组中搜索两个值 (x, y)。当我找到 x ,需要检查:如果y在下一个索引上,我们有一个匹配。如果 y不在下一个索引上,搜索将继续。我应该如何解决这个问题?我试过使用 Array.findIndex ,但没有成功,因为我不知道如何在 y 时继续搜索不在下一个索引上。

编辑:

public void GetValue(byte[] data)
        {
            byte[] temp = new byte[4];
            for (int i = 0; i < data.Length; i++)
            {
                if (data[i] == Adress[0] && data[i + 1] == Adress[1])
                {
                    for (int j = 0; j < temp.Length; j++)
                    {
                        temp[j] = data[j + i + 2];
                    }
                    Value = BitConverter.ToInt32(temp, 0) * 0.01;
                    break;
                }

            }

最佳答案

你可以很容易地把它变成一个函数:

let bytes = [| 104uy; 101uy; 108uy; 108uy; 111uy |]

bytes 
|> Array.pairwise
|> Array.findIndex (fun x -> fst x = snd x)
//2

关于f# - 在数组中搜索 2 个相邻的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45454743/

相关文章:

f# - F#中时间戳的并行排序-功能性方式?

c# - 什么任务最适合用函数式编程风格完成?

f# - 如何从 F# 中的构造函数调用方法

javascript - 在没有 lodash 的情况下 curry 我的函数

kotlin - 在Kotlin `when`语句(或其他分支构造)中将函数或lambda作为条件包括在内的最简洁方法是什么?

java - 一种在 Java 8 中为算术运算编写函数的简洁方法

F#:预期 'in' 或其他标记错误

list - 在 F# 中过滤列表的最佳功能方式

f# - 在 HtmlProvider<...>.Table.Row> 中自动输入列

ruby - Ruby 中有标识函数吗?