我正在尝试实现一个可以遍历对象的函数。
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])
}
}
看起来像类型边界中_
的问题,在将其替换为它编译的字母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类型的空列表
我试图约束泛型函数的返回类型。(为了简化示例,请忽略函数的实际“有用性”)。 但是返回语句会导致打字错误- -这让我很困惑。在我的理解中,