簡體   English   中英

Scala案例類,條件復制

[英]Scala case class, conditional Copy

我定義了一個case類和一個值:

scala> case class N(a:Int, b:Int)
defined class N

scala> val nnn = N(2,3)
nnn: N = N(2,3)

我想使用Option [Int]類型基於可選值t1t2修改字段,這是我所做的:

val nnn1 = t1.map( x => nnn.copy( a = x)).getOrElse(nnn)
val nnn2 = t2.map( x => nnn1.copy( b = x)).getOrElse(nnn1)

有沒有鏡頭/單聲道/ Scalaz的通用方法?

一個好的方法值得

def someF(i:Int) = // a great computation with i :)

val na = t1.map(someF).getOrElse(nnn.a)

val newnnn = nnn.copy(a = na, b = t2.getOrElse(nnn.b)) 

在必須將一些F應用於t1的情況下,將其分開可能是一個好主意。 沒有適合您的鏡頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM