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

可遍历文件夹的函数参数左导致类型不匹配

余靖
2023-03-14

我正在尝试实现一个可以遍历对象的函数。

def f[V, M[_] <: Traversable[_]](ei: M[V])(builder: GenericCompanion[M]): M[V] =
  ei.foldLeft(builder.empty[V])((accum: M[V], el: V) => builder(el))

此代码无法编译,因为

Error:(22, 57) type mismatch;
 found   : el.type (with underlying type Any)
 required: V
  ei.foldLeft(builder.empty[V])((accum, el) => builder(el))
                                                       ^

用scala 2.11.8和2.12.1复制。太奇怪了。为什么< code>el被假定为< code>Any?

我可以用猫图书馆解决它。所以问题不是“怎么做?”而是“为什么纯scala代码是错误的?”。

def f[V, M[_] : Foldable : Alternative](ei: M[V]): M[V] = {
  val monoidK = implicitly[MonoidK[M]]

  ei.foldLeft(monoidK.empty[V]) {
    (accum, el) => monoidK.algebra[V].combine(accum, el.pure[M])
  }
}

共有1个答案

万俟均
2023-03-14

看起来像类型边界中_的问题,在将其替换为它编译的字母X之后。

def f[V, M[X] <: Traversable[X]](ei: M[V])(builder: GenericCompanion[M]): M[V] =
  ei.foldLeft(builder.empty[V])((accum: M[V], el: V) => builder(el))

看一下这个答案,获得一些直觉。据我所知

< code>M[_]

M[X]

 类似资料:
  • 问题内容: 我第一次使用JavaFx,遇到事件问题。我用SceneBuilder构建了一个表单,并在.fxml和controller上添加了一个事件,但始终返回: FirstScene.fxml: FirstSceneController.java: JavaFxApplication.java: 例外: 我将非常感谢您的帮助。 问题答案: 使用,而不是。

  • 问题内容: 我试图遍历并拾取目录中的文件,但是在实现它时遇到了一些麻烦。如何提取多个文件,然后将它们移动到另一个文件夹? 问题答案: 带回调的旧答案 您想要使用fs.readdir函数获取目录内容,并使用fs.rename函数实际执行重命名。如果您 需要 等待它们完成之后再运行代码,则这两个函数都具有同步版本。 我写了一个快速脚本来完成您所描述的。 在我的本地机器上测试。 更新:fs.promis

  • 本文向大家介绍PHP使用glob函数遍历目录或文件夹的方法,包括了PHP使用glob函数遍历目录或文件夹的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP使用glob函数遍历目录或文件夹的方法。分享给大家供大家参考。具体分析如下: 一说到php遍历目录我们很多朋友会想到是opendir与readdir,这样就可以遍历目录并显示文件,但在php中有一个更简洁的遍历目录的函数glob

  • 问题内容: 在Java中,您可以执行和接收目录中的所有文件。然后,您可以轻松地通过目录树进行递归。 在Python中有类似的方法吗? 问题答案: 就在这里。Python方式更好。 有三种可能性: 1)像File.listFiles()一样: Python具有函数os.listdir(path)。它的工作方式类似于Java方法。 2)使用glob扩展路径名模式: 模块glob包含使用Unix she

  • 问题内容: 在Java中,我需要从我的方法中返回一个Iterator。我的数据来自另一个对象,该对象通常可以给我一个迭代器,因此我可以返回它,但是在某些情况下,基础数据为null。为了保持一致,在这种情况下,我想返回一个“空”迭代器,这样我的调用者就不必测试null。 我想写一些类似的东西: 但是Java编译器抱怨返回而不是。投射到也不起作用。 问题答案: 您可以通过以下语法获取Foo类型的空列表

  • 我试图约束泛型函数的返回类型。(为了简化示例,请忽略函数的实际“有用性”)。 但是返回语句会导致打字错误- -这让我很困惑。在我的理解中,