Scala-嵌套循环,用于理解和确定最终迭代的类型
我对scala比较陌生,并且成功地制作了一些非常简单的程序。 然而,现在我正在尝试解决现实世界中的一些问题,事情变得有点难了 我想使用各种“FileTypeReader”子类型将一些文件读入“Configuration”对象,这些子类型可以“接受”某些文件,每个FileTypeReader子类型一个文件,如果可以从中提取配置,则返回选项[Configuration] 我试图避免命令式风格,并在这里使用scala io、scaladoc作为路径编写了如下内容: 当然,这是行不通的,因为理解返回了这里第一个生成器类型的集合,即一些IterablePathSet 由于我尝试了许多变体,感觉像是在循环中运行,所以我请求您就这一问题提供建议,以解决我的-琐碎的?-优雅的问题!: 多谢各位Scala-嵌套循环,用于理解和确定最终迭代的类型,scala,loops,Scala,Loops,我对scala比较陌生,并且成功地制作了一些非常简单的程序。 然而,现在我正在尝试解决现实世界中的一些问题,事情变得有点难了 我想使用各种“FileTypeReader”子类型将一些文件读入“Configuration”对象,这些子类型可以“接受”某些文件,每个FileTypeReader子类型一个文件,如果可以从中提取配置,则返回选项[Configuration] 我试图避免命令式风格,并在这里使用scala io、scaladoc作为路径编写了如下内容: 当然,这是行不通的,因为理解返回了这
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