我发现在运行程序时正在调用该函数。但是,如果我在同一个缩进上有2个if语句,则第二个if语句不会启动。但是,如果我从控制台运行val q = user.filter(_.id > 1)
val future = db.run(q.result)
val users = Await.result(future, Duration.Inf)
users foreach println
,它就能完美运行。
以下此功能无法在程序中调用。没有错误,只是没有。但是,我可以通过在空闲shell中键入result()
来手动调用它。
以下是整个计划:
result()
答案 0 :(得分:3)
当你在shell中并且调用方法和函数时,如果它不是None
,则显示返回的值。所以你的程序实际上是有效的,只是你没有明确print
result()
的返回值。当你不在shell中运行它时,似乎什么也没发生。当您在shell中调用result()
时,shell会自动显示返回的值。
要“修复”此项,只需print
返回的值。我强烈建议你也在shell之外工作,以了解Python的实际工作方式。
假设执行以下代码时你在shell中:
>>> def a(n):
... print n * n
...
>>> def b(n):
... return n * n
...
>>> a(5)
25
>>> b(5)
25
>>> exit()
注意两个函数似乎都是一样的。但是,它们差别很大。 a(n)
的返回类型为None
,而b(n)
的返回类型为int
。因此,如果您要运行调用a(5)
和b(5)
的程序(而不是来自shell),您只会看到一个25
,而不是两个b(5)
。这是因为您不在shell 中,因此main()
返回的值不会自动显示。
另外,要在shell之外运行您的程序,请修改start()
以便调用pass
,而不是调用pass
({{1}}本质上意味着“什么都不做”)。