小编Man*_*oid的帖子

Scala中方法副作用的含义

Martin Odersky的书"Scala编程"讲述了避免有副作用的方法.例如,以下方法具有写入标准输出流的副作用.

def printArgs(args: Array[String]): Unit = {
  args.foreach(println)
}
Run Code Online (Sandbox Code Playgroud)

然后它说,更好的方法是定义一个格式化传递的args进行打印的方法,但只返回格式化的字符串,如:

def formatArgs(args: Array[String]) = args.mkString("\n")
Run Code Online (Sandbox Code Playgroud)

我不明白这两种方法在概念上是如何不同的.总之,我们的目标是打印一个字符串.如果我们不在目标方法中这样做,那么客户端代码会这样做,这意味着我们只是转移代码导致从一个地方到另一个地方的"副作用".

functional-programming scala side-effects

0
推荐指数
1
解决办法
298
查看次数

从 Option 内的对象中提取默认字段值

我有一个 A 类,它包含一个 B 类的选项(比如 b),它可以是 None。B 里面有一个字符串值(比如 str),我需要提取它,它的默认值是一个空字符串。所以基本上如果 b 是 None,我需要得到空字符串。

a.b.getOrElse(B).str
Run Code Online (Sandbox Code Playgroud)

所以,在这里我需要创建一个 B 的实例。这可以避免吗?

scala

0
推荐指数
1
解决办法
60
查看次数

Scala:seq.size vs 模式匹配

我必须根据 Seq 的大小做出决定。

所以,要么我可以这样做:

if(mySeq.size() > 0) // do your stuff
Run Code Online (Sandbox Code Playgroud)

或者,我可以这样做:

mySeq match {
  case x :: _ => // do your stuff
}
Run Code Online (Sandbox Code Playgroud)

我应该更喜欢哪一个?

functional-programming if-statement scala pattern-matching

0
推荐指数
2
解决办法
104
查看次数

Scala 模式匹配:对于某些情况不执行任何操作

我必须根据模式匹配块中的情况执行一些操作,但仅限于选择性情况,其余情况无需执行任何操作。那么剩下的情况就直接 return() 就可以了吗?像这样的东西:

    val x = ....
    val y = ....
    (x, y) match {
              case (Some(number), Some(text)) => {
                ...... 
              }
              case (Some(number), None) => {
                ......
              }
              case (_, _) => () // do nothing
            }
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching

0
推荐指数
1
解决办法
2262
查看次数