scala - 是否可以在 Scala 中强制命名参数?

标签 scala

在某些方法中,我想强制命名参数。原因是未指定参数顺序的自动生成代码(并将保持这种状态)。

我能得到的最接近的是

private val _forceNamed: Object = new Object()

def doSomething(forceNamed: Object = _forceNamed, arg1: String, arg2: String, ...): Unit = {
  if (forceNamed != _forceNamed) {
    throw Exception(something)
  }

  // actually do stuff
}

然而,这只在运行时失败,而在编译时失败会更好。

最佳答案

为此,我们在代码库中有这个:

object `(Please use explicitly named arguments)`
def foo(
  `(Please use explicitly named arguments)`:
    `(Please use explicitly named arguments)`.type =
    `(Please use explicitly named arguments)`,
  namedArg1: Int,
  namedArg2: String,
  ...
) = ...

关于scala - 是否可以在 Scala 中强制命名参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41513569/

相关文章:

scala - 了解 scala 中 Some 类型的 val 声明语法

Scala isInstanceOf 和类型删除

scala - sbt无法解决依赖关系

arrays - 使用泛型类型定义的函数

scala - Future 的 OnSuccess 调用中变量的范围发生了变化

scala - 生成可能的组合

scala - 在我的 Play 应用程序中没有请求的情况下无法从路由中获取 URL

Scala:惯用的 Try-match 和避免捕获 Throwable

scala - 控制流的单子(monad)——序列、选择和迭代

scala - 配置 Scalaxb SBT 插件生成的源代码位置