Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala-嵌套循环,用于理解和确定最终迭代的类型_Scala_Loops - Fatal编程技术网

Scala-嵌套循环,用于理解和确定最终迭代的类型

Scala-嵌套循环,用于理解和确定最终迭代的类型,scala,loops,Scala,Loops,我对scala比较陌生,并且成功地制作了一些非常简单的程序。 然而,现在我正在尝试解决现实世界中的一些问题,事情变得有点难了 我想使用各种“FileTypeReader”子类型将一些文件读入“Configuration”对象,这些子类型可以“接受”某些文件,每个FileTypeReader子类型一个文件,如果可以从中提取配置,则返回选项[Configuration] 我试图避免命令式风格,并在这里使用scala io、scaladoc作为路径编写了如下内容: 当然,这是行不通的,因为理解返回了这

我对scala比较陌生,并且成功地制作了一些非常简单的程序。 然而,现在我正在尝试解决现实世界中的一些问题,事情变得有点难了

我想使用各种“FileTypeReader”子类型将一些文件读入“Configuration”对象,这些子类型可以“接受”某些文件,每个FileTypeReader子类型一个文件,如果可以从中提取配置,则返回选项[Configuration]

我试图避免命令式风格,并在这里使用scala io、scaladoc作为路径编写了如下内容:

当然,这是行不通的,因为理解返回了这里第一个生成器类型的集合,即一些IterablePathSet

由于我尝试了许多变体,感觉像是在循环中运行,所以我请求您就这一问题提供建议,以解决我的-琐碎的?-优雅的问题!:

多谢各位


sni。

您是否正在尝试找到它可以提取的第一个配置?如果没有,如果返回多个配置会发生什么


在第一种情况下,我只需要得到for construction的结果并调用find,它将返回一个选项。

您是否正在尝试找到它可以提取的第一个配置?如果没有,如果返回多个配置会发生什么


在第一种情况下,我只需要得到for construction的结果并调用find,它将返回一个选项。

如果我理解正确,您的问题是您有一个Set[Path],并且希望生成一个List[Option[Configuration]]。如前所述,配置将是一组[选项[配置]]。要将其更改为列表,请使用toList方法,即

val configurations = (for {
    nextPath <- Path(someFolder).children
    reader   <- readers
  } yield reader.accept(nextPath) ).toList

如果我理解正确,您的问题是您有一个集合[Path],并且希望生成一个列表[Option[Configuration]。如前所述,配置将是一组[选项[配置]]。要将其更改为列表,请使用toList方法,即

val configurations = (for {
    nextPath <- Path(someFolder).children
    reader   <- readers
  } yield reader.accept(nextPath) ).toList

这有点困难,除非你告诉我们理解中的元素是什么类型的-例如,孩子们返回什么,读者是什么。REPL示例对于问scala问题非常有用,因为它们可以复制。我编辑了我的问题,以便更清楚!这有点困难,除非你告诉我们理解中的元素是什么类型的-例如,孩子们返回什么,读者是什么。REPL示例对于问scala问题非常有用,因为它们可以复制。我编辑了我的问题,以便更清楚!你好,Daniel,不,我想要一个所有配置的Iterable,因此找到了我的var名称!你好,Daniel,不,我想要一个所有配置的Iterable,因此找到了我的var名称!路易吉,这太好了,正是我想要的!然而,有谁能解释一下为什么我得到了:ScalaObject=>scala.collection.TraversableOnce[B]没有隐式视图,当我尝试使用没有toList的第一个解决方案“configurations.flatten”时,为什么它在我添加它时工作得非常好?我不知道;它应该可以在SetSome1.None.flatte编译中使用。你没有使用Scala的古老版本,2.8之前的版本,是吗?看到没有,2.9.1与sbt 0.11.2和scala.io 0.3.0路易吉,这是伟大的,正是我想要的!然而,有谁能解释一下为什么我得到了:ScalaObject=>scala.collection.TraversableOnce[B]没有隐式视图,当我尝试使用没有toList的第一个解决方案“configurations.flatten”时,为什么它在我添加它时工作得非常好?我不知道;它应该可以在SetSome1.None.flatte编译中使用。你没有使用Scala的古老版本,2.8之前的版本,是吗?见第2.9.1条,sbt 0.11.2和scala.io 0.3.0
val configurations = for {
    nextPath <- Path(someFolder).children.toList
    reader   <- readers
  } yield reader.accept(nextPath)
val configurations = for {
    nextPath <- Path(someFolder).children.toList
    reader   <- readers
    conf     <- reader.accept(nextPath)
  } yield conf