我很好奇这样做的正确方式。假设我想从一个方法中发出成功或失败的信号。如果在成功的情况下我没有什么想说的,除了它成功了,这是可以接受的吗?
def fn(): Either[Throwable, Unit]
那么,从这个方法返回Right()的正确方法是什么呢?显然,仅仅返回Right()就给出了一个弃用警告(通过插入()来调整参数列表的做法已被弃用)。
我也可能做Option[抛弃],但这不符合我阅读Option的精神。或者返回scala的结果。util。尝试并评估成功/失败?
--关于弃用警告,仅供参考。
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101).
Type in expressions for evaluation. Or try :help.
scala> def fn:Either[Throwable, Unit] = { Right() }
<console>:11: warning: Adaptation of argument list by inserting () has been deprecated: this is unlikely to be what you want.
signature: Right.apply[A, B](b: B): scala.util.Right[A,B]
given arguments: <none>
after adaptation: Right((): Unit)
def fn:Either[Throwable, Unit] = { Right() }
^
fn: Either[Throwable,Unit]
我会说这取决于您正在寻找的API类型。
def fn():在我看来,[可丢弃的,单位]
听起来很不习惯。如果您期望函数的主要结果是副作用,那么使用或
似乎没有什么用处。这是因为它是一元操作链的终端操作吗?
这些天来,它变得不那么流行,也不那么地道了,但我可能会去试试,然后在那里处理这些案例。另一种惯用的选择是创建一个所有错误类型的密封特征层次结构,并从有效函数而不是原始的可丢弃实例返回这些属性,而不是在
或
中洗牌异常。
我没有看到您在REPL上调用
Right()
或Right(())
时注意到的错误,您使用的是什么版本的scalac?
您可以使用Unit
作为类型并返回()
。
def fn(): Either[Throwable, Unit] = Right(())
下面是代码的味道:https://scastie.scala-lang.org/bQMGrAKgRoOFaK1lwCy04g 我有两个JSON APIendpoint。首先是项目。cgi以以下格式返回项目对象列表 表示项目没有借款人。 其次,用户。cgi,返回查询参数id指定的用户 API可能不好,但我必须处理它。现在在Scala中,我想使用这个漂亮的数据模型 我还有以下用于执行HTTP请求的方法
我试图用https://github.com/slick/slick-examples/blob/master/src/main/scala/scala/slick/examples/lifted/firstexample.scala: 如果使用 还有...
我有一个JVM应用程序,需要在IntelliJ2016.3.5中使用带有Gradle任务(作为依赖项运行和测试)的断点进行调试。 关于如何使用Gradle和Intellij完成调试,有各种来源: 使用Intellij调试Gradle插件 在gradle项目中使用Intellij设置断点(最有帮助的) https://youtrack.jetbrains.com/issue/idea-119551
将函数传递给另一个函数的Scala示例缺少传递的函数(时间段)接受参数(x)的情况。 我怎样才能使上述代码工作? 编辑:我在oncepersecond中添加了一个x,以明确目标是传递整数。
null
问题内容: 我正在尝试解析CSV文件,最好使用weka.core.converters.CSVLoader。但是,我拥有的文件不是有效的UTF-8文件。它主要是一个UTF-8文件,但是某些字段值使用不同的编码,因此没有一种编码方式可以使整个文件有效,但是无论如何我都需要对其进行解析。除了使用像Weka这样的Java库之外,我主要在Scala中工作。我什至无法读取scala.io中的文件。资料来源: