相关疑难解决方法(0)

从 A 到 Some(a) 的隐式转换

出于好奇,我想知道是否可以执行以下操作:

def myMethod(
  a: Option[A] = None,
  b: Option[B] = None, 
  ...
  z: Option[Z] = None
): Something = {
  ...
}
Run Code Online (Sandbox Code Playgroud)

我想要的是不必这样称呼它:

myMethod(
  b = Some(newB),
  m = Some(newM)
)
Run Code Online (Sandbox Code Playgroud)

而是能够做到myMethod(b = newB, m = newM)而不必总是转换ASome(a).

是否可以 ?

functional-programming scala

3
推荐指数
1
解决办法
141
查看次数

如何标准化联合类型(T | Option[T])?

我有以下内容case class

case class Example[T](
    obj: Option[T] | T = None,
)
Run Code Online (Sandbox Code Playgroud)

Example(myObject)这使我能够像而不是那样构建它Example(Some(myObject))

要使用 obj,我需要将其标准化为Option[T]

  lazy val maybeIn = obj match
    case o: Option[T] => o
    case o: T => Some(o)
Run Code Online (Sandbox Code Playgroud)

the type test for Option[T] cannot be checked at runtime

我尝试过TypeTest,但也收到警告 - 或者我发现的解决方案看起来非常复杂 - 请参阅/sf/answers/4872566401/

在Scala 3中是否有更好的方法来实现这种模式?

scala scala-3

2
推荐指数
1
解决办法
343
查看次数

标签 统计

scala ×2

functional-programming ×1

scala-3 ×1