有没有办法在复制语句中引用要复制的对象而不必将对象分配给变量?
例如,我可以这样做:
case class Foo(s: String)
val f = Foo("a")
f.copy(s = f.s + "b")
Run Code Online (Sandbox Code Playgroud)
但我想这样做:
case class Foo(s: String)
Foo("a").copy(s = this.s + "b")
Run Code Online (Sandbox Code Playgroud)
不是直接的.人们有时会定义一个管道方法来处理这类事情(不仅仅是案例类).在2.10:
implicit class PipeEverything[A](val value: A) extends AnyVal {
def |>[Z](f: A => Z) = f(value)
}
Run Code Online (Sandbox Code Playgroud)
但这并不总能节省那么多空间:
Foo("a") |> (x => x.copy(s = x.s + "b"))
{ val x = Foo("a"); x.copy(s = x.s + "b") }
Run Code Online (Sandbox Code Playgroud)
请记住,您几乎可以在Scala中的任何位置放置代码块,因此创建瞬态val通常不是什么大问题.
| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |