Scala 有没有办法将带括号的0-arity方法迁移到不带括号的方法?
比如说,我设计了一些API,并在其定义中短视地给出了一个0-arity函数括号Scala 有没有办法将带括号的0-arity方法迁移到不带括号的方法?,scala,Scala,比如说,我设计了一些API,并在其定义中短视地给出了一个0-arity函数括号 类Foo(值:字符串){ def chars():Seq[Char]=value.toSeq } 这意味着,如果您想在调用此方法后在返回的Seq上使用apply,则必须提供空括号,这是令人讨厌的: val f=new Foo(“你好”) println(f.chars()(3)) 这显然不理想,最好能写: println(f.chars(3)) 当然,如果从方法定义中删除括号,则会中断所有提供括号的现有用法。有
类Foo(值:字符串){
def chars():Seq[Char]=value.toSeq
}
这意味着,如果您想在调用此方法后在返回的Seq
上使用apply
,则必须提供空括号,这是令人讨厌的:
val f=new Foo(“你好”)
println(f.chars()(3))
这显然不理想,最好能写:
println(f.chars(3))
当然,如果从方法定义中删除括号,则会中断所有提供括号的现有用法。有没有一种方法可以在不破坏所有用途的情况下将0-arity函数从有括号迁移到没有括号?您可以给parened方法一个未使用的vararg
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