当前位置: 首页 > 知识库问答 >
问题:

F#编译器抱怨递归函数中的类型无效

薛霄
2023-03-14

在F#中,我试图编写一个函数,给定两个字符串,它将返回第一个字符串中第二个字符串开头的所有索引。我的函数看起来像这样:

let allIndexOf (str:string) (c:string) =
    let rec inner (s:string) l =
        match (s.IndexOf(c), (s.IndexOf(c)+1) = s.Length) with
        | (-1, _) -> l
        | (x, true) -> x::l
        | (x, false) -> inner(s.Substring(x+1) x::l)
    inner str []

问题是在线(x, false)-

在本例中,我想用字符串的其余部分(减去匹配的部分)调用inner,以查找更多匹配项。


共有1个答案

拓拔野
2023-03-14

你忘了第一个和第二个论点之间的父母吗?

    | (x, false) -> inner (s.Substring(x+1)) (x::l)
 类似资料:
  • 问题内容: 游乐场执行失败:MyPlayground.playground:109:22:错误:无效使用’()’调用非函数类型’[ClassA.ClassB.Type]’的值时,让didNotCompile = ClassA.ClassB ^ ~~ 问题答案: 如您所述,它可以使用以下语法: 但是,如果我们声明一个: 因此,我想说这是一个错误,也应该无需输入别名即可工作。 更新 :Apple 已经

  • 我正在尝试编写一个列出目录中所有非隐藏文件的方法。但是,当我添加条件 我的代码无法编译,编译器返回以下错误: 我试图捕捉< code>IOException,但是编译器仍然拒绝编译我的代码。我遗漏了什么明显的东西吗?代码如下所示。

  • 问题内容: 我下面这个线程,这一个建立自己的KDE没有须藤权限。由于没有在工作站上安装Git和CMake。我只是将它们都安装在 / home / <用户>下,并将 / home / <用户> / bin和 / home / <用户> / lib添加 到PATH和LD_LIBRARY_PATH中。由于KDE构建仅支持CMake,因此不进行配置。因此,我必须通过CMake设置前缀,如下所示:。在这一点

  • 问题内容: 在Java的for-each循环中使用泛型时,出现一个奇怪的编译器错误。这是Java编译器错误,还是我真的在这里遗漏了什么? 这是我全班的: 编译器抱怨for-each所在的行:“类型不匹配无法从元素类型Object转换为String。” 如果我进行了微妙的更改,它将编译为: 我知道确实使用泛型,但是我以完全不相关的方式使用它们。如果我尝试遍历T类型的某些内容并返回a 或某种内容,我可

  • 请按顺序阅读代码中的注释,问题详细信息在那里<为什么会出现这种差异 如果可能,请引用JLS。 我最初在IntelliJ IDEA中发现了这一点,但我猜编译器与javac兼容,因为当我用以下代码编译上述代码时,它给出了相同的错误/警告。

  • 我有一个实现Iterable的类,以便用户可以使用迭代器。我使用泛型来允许用户使用任何类型并使用该类。 这是下面的工作代码,没有警告- 但是,如果我将ListIterator定义如下- 我在 Eclipse 中收到警告, 当我在类后指定泛型类型时,它为什么会抱怨?为了能够在我的类中使用Type,我不应该这样做吗?我在定义CustomStackUsingArray时添加了类型,效果很好。