【问题标题】:Return only value without function name in Scala在Scala中只返回没有函数名的值
【发布时间】:2021-10-07 17:10:48
【问题描述】:

我是 Scala 新手。我试图从 Spark 中的一些 scala 代码中返回一个值,并且我还得到了函数名和结果。前执行如下

def getHistory() : Long = {
    1 + 1
}
getHistory()

返回

getHistory: ()Long
res140: Long = 2

返回的附加信息似乎是下面提到的 REPL 的函数。如何关闭此功能,以便我只看到 2 被返回。

【问题讨论】:

  • 您只返回2,其余的只是您的 REPL 提供的一些有用的文本。我不确定你的问题是否理解。
  • 谢谢,我对 REPL 不熟悉,这提供了一些可以使用的东西。我已经修改了细节。如何将 REPL 配置为不返回有用的文本?
  • 如果您不想要 REPL 文本,请不要在 REPL 中运行您的代码。相反,您可以将代码放入main() 方法中,编译文件并调用编译后的程序。寻找一个好的初学者教程了解详情。

标签: scala read-eval-print-loop


【解决方案1】:

正如您帖子的第一条评论所暗示的那样,您获得的“额外内容”只是 REPL 的冗长。

你的函数确实只返回值 2。

https://docs.scala-lang.org/overviews/repl/overview.html

【讨论】:

  • 谢谢,我对 REPL 不熟悉,这提供了一些可以使用的东西。我已经修改了细节。如何将 REPL 配置为不返回有用的文本
【解决方案2】:

如果您不想看到 REPL 文本,可以将其设置为 :silent,但您将看不到任何未发送到 STDOUT 的内容。

这是一个示例会话:

%> scala  #start the REPL
Welcome to Scala 2.13.5 (OpenJDK 64-Bit Server VM, Java 11.0.11).
Type in expressions for evaluation. Or try :help.

scala> :silent

scala> def two() = 1 + 1

scala> two()

scala> print(two())
2
scala> 

【讨论】:

    【解决方案3】:

    无法以您想要的确切方式配置 REPL。 (你为什么要这样配置?你的动机是什么?这个问题令人费解。)

    无论如何,您都可以使用println 来产生“裸”输出:

    scala> println(getHistory())
    2
    

    【讨论】:

    • 尝试通过某些 API 执行一些 scala 脚本(不是 jar),然后使用结果。当前 API 结果采用 json 格式,整个 helpful text + result 以字符串形式返回。我所需要的只是没有有用文本的实际结果。
    猜你喜欢
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 2014-01-03
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多