是否有一个简短版本用于修改和重新设置Scala中的变量?

Tor*_*ben 2 scala

我想知道是否有更短的版本

var longVariableName: MyType = MyTyp("Value")
longVariableName = longVariableName.addSomething("added")

case class MyType(value: String) {
  def addSomething(add: String): MyType = ???
}
Run Code Online (Sandbox Code Playgroud)

也许是这样的

var longVariableName: MyType = MyType("Value")
longVariableName = _.addSomething("extended")
Run Code Online (Sandbox Code Playgroud)

真是太好了:)谢谢

maa*_*asg 5

我想最简单的方法是:

val longVariableName = MyTyp("Value")
.addSomething("added")
.addSomethingElse("other")
.addSomeMore("stuff")
Run Code Online (Sandbox Code Playgroud)

只要每个方法返回基本类型(即"Builder"模式),您就可以进一步链接调用.通过这种方式,您可以使用值(而不是变量),并且假定每个方法调用都返回一个案例类的新实例,它是不可变的,没有副作用.

此外,案例类使用复制方法支持类似构建器的模式,该模式允许以不可变的方式在路上"添加"信息.

像这样的东西:

case class Player(name:String, rank:Option[String] = None) { 
    def withRank(rank:Int)= this.copy(rank=Some(s"top${100-rank}%")) 
}

val player = Player("sparky").withRank(5)
Run Code Online (Sandbox Code Playgroud)

(或多线)

val player = Player("sparky")
.withRank(5)
Run Code Online (Sandbox Code Playgroud)