Scala 有任何有用价值的成功

Scala 有任何有用价值的成功,scala,Scala,我有一些代码,如果存在异常,可能会生成异常,如果成功运行,则不会返回任何内容 我的问题是:有没有处理此类案件的最佳方法 实际上,我正在使用一个Try[Unit]返回Failure(exception)或Success(Unit),但我想知道这样做是否正确?是否有任何最佳实践?还是在这种情况下使用更好的方法 下面是我的代码概述: val result: Try[Unit] = Try { //some code that may generate exceptions Suc

我有一些代码,如果存在异常,可能会生成异常,如果成功运行,则不会返回任何内容

我的问题是:有没有处理此类案件的最佳方法

实际上,我正在使用一个
Try[Unit]
返回
Failure(exception)
Success(Unit)
,但我想知道这样做是否正确?是否有任何最佳实践?还是在这种情况下使用更好的方法

下面是我的代码概述:

val result: Try[Unit] = 
  Try {
    //some code that may generate exceptions
    Success(Unit)
  }
编辑1:如接受的答案和评论中所述,我使用
Try
的方式是错误的。
Try
将结果包装为
Success
,将异常包装为
Failure
,因此返回
Success
没有意义,我们必须直接返回结果。在这种情况下,返回
()
,如下所示:

val result: Try[Unit] = 
  Try {
    //some code that may generate exceptions
    ()
  }

键入
Try[Unit]
似乎是一种方法,以下是repl必须展示的内容:

scala> import scala.util._
import scala.util._

scala> val a: Try[Unit] = Try { 2 + 2 }
a: scala.util.Try[Unit] = Success(())

scala> a.toOption // check that there's really nothing in the returned value
res0: Option[Unit] = Some(())

scala> val b = Try { 2 + 2 }
b: scala.util.Try[Int] = Success(4)
请注意另外两件事:

  • 正如在对您的问题的评论中所述,您在代码中使用
    Try
    的方式是错误的,我将在下面给出一个正确的示例
  • 您也可以返回单位,但您这样做的方式也是错误的,您实际返回的是
    单位
    伴生对象,请参见下面的正确方法:

  • 键入
    Try[Unit]
    似乎是一种方法,以下是repl必须展示的内容:

    scala> import scala.util._
    import scala.util._
    
    scala> val a: Try[Unit] = Try { 2 + 2 }
    a: scala.util.Try[Unit] = Success(())
    
    scala> a.toOption // check that there's really nothing in the returned value
    res0: Option[Unit] = Some(())
    
    scala> val b = Try { 2 + 2 }
    b: scala.util.Try[Int] = Success(4)
    
    请注意另外两件事:

  • 正如在对您的问题的评论中所述,您在代码中使用
    Try
    的方式是错误的,我将在下面给出一个正确的示例
  • 您也可以返回单位,但您这样做的方式也是错误的,您实际返回的是
    单位
    伴生对象,请参见下面的正确方法:

  • .transform()
    对你没有任何帮助。
    Try
    块的结果已经是
    Success
    Failure
    @jwvh我刚刚编辑了我的问题,以便它更清晰。
    转换
    只是一个例子。我的问题是如何表示没有任何有用价值的
    成功
    。感谢您的评论您仍然没有正确使用
    请尝试
    。您不需要直接声明
    Success()
    Failure()
    。这就是
    Try
    自动提供的功能。这样做
    在REPL中尝试{println(“go”)}
    ,看看你得到了什么。如果
    Try
    代码没有遇到异常,那么它将返回一个
    成功
    .transform()
    对您没有任何帮助。
    Try
    块的结果已经是
    Success
    Failure
    @jwvh我刚刚编辑了我的问题,以便它更清晰。
    转换
    只是一个例子。我的问题是如何表示没有任何有用价值的
    成功
    。感谢您的评论您仍然没有正确使用
    请尝试
    。您不需要直接声明
    Success()
    Failure()
    。这就是
    Try
    自动提供的功能。这样做
    在REPL中尝试{println(“go”)}
    ,看看你得到了什么。如果
    Try
    代码没有遇到异常,则它将返回
    成功