Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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_Slick - Fatal编程技术网

Scala 如何打印平滑查询的结果

Scala 如何打印平滑查询的结果,scala,slick,Scala,Slick,我有一张叫做“材料”的桌子。我使用slicks模式自动生成为我创建TableQuery类 我不知道如何只打印一个简单查询的结果 Materials.map(_.name) 我试过了 val m = Materials.map(_.name).toString() println(m) 并得到结果 Rep(Bind) 如果我尝试 Materials.map(_.name).forEach(m => println(m)) 我得到一个编译错误 value forEach is not

我有一张叫做“材料”的桌子。我使用slicks模式自动生成为我创建TableQuery类

我不知道如何只打印一个简单查询的结果

Materials.map(_.name)
我试过了

val m = Materials.map(_.name).toString()

println(m)
并得到结果

Rep(Bind)
如果我尝试

Materials.map(_.name).forEach(m => println(m))
我得到一个编译错误

value forEach is not a member of slick.lifted.Query[slick.lifted.Rep[Option[String]],Option[String],Seq]

为了澄清我使用的是just slick 3.1.0 not play slick

您可以使用map评估具有副作用的功能:

Materials.map(println(_.name))

您已经编写了一个查询,但需要通过调用其结果方法将其转换为操作

val query = materials.map(_.name)
val action = query.result
val results: Future[ Seq[Option[ String ] ]] = db.run( action)
results.foreach( println )
db对象需要根据您使用的Slick版本进行初始化。e、 g或

我想你有这个

val materials = TableQuery[Materials]

这给了我一个编译错误,说它需要db.run(action)处的slick.dbio.DBIOAction[Seq[String],slick.dbio.NoStream,Nothing],因为action我没有val Materials=TableQuery[YourMaterialsTableMapping]。表名为Materials,因此我使用val Materials=TableQuery[Materials]。我必须将Future[Seq[String]]更改为Future[Seq[Option[String]]]才能让它工作,但它现在可以工作了。编辑您的答案以包含选项部分,我会将其标记为答案。根据您的建议编辑我看到这已成为一个更受欢迎的问题,因此我想为那些参与此问题寻找答案的人澄清。我使用slicks schema auto generation来实现这一点&这是在我用来学习scala的一个演示应用程序上实现的。我建议其他看到这个问题的人了解scala的未来是什么,因为这是一个灵活的查询执行的结果,但是Seq选项字符串并不总是返回。这要看情况而定。未来就像一个单子,打印是一个副作用,如果你想对单子产生副作用,你必须使用foreach方法来“解包”。