假设我设计了一些 API,并且短视地在其定义中给出了 0 元函数括号
class Foo(value: String) {
def chars(): Seq[Char] = value.toSeq
}
这意味着,如果您想在调用此方法后在返回的 Seq
上使用 apply
,则必须提供空括号:
val f = new Foo("Hello")
println(f.chars()(3))
这显然不太理想,最好能够这样写:
println(f.chars(3))
当然,如果从方法定义中删除括号,则会破坏所有提供括号的现有用法。有没有办法在不破坏所有用途的情况下将 0 元函数从有括号迁移到没有括号?
最佳答案
您可以为 parened 方法提供一个未使用的可变参数。
class Foo(value: String) {
def chars(cs:Char*): Seq[Char] = value.toSeq
def chars: Seq[Char] = value.toSeq
}
(new Foo("wxyz")).chars()(2) //res0: Char = y
(new Foo("wxyz")).chars(2) //res1: Char = y
关于scala - 有没有办法将带括号的 0 元方法迁移到不带括号的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61004457/