Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 有没有办法将带括号的0-arity方法迁移到不带括号的方法?_Scala - Fatal编程技术网

Scala 有没有办法将带括号的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)) 当然,如果从方法定义中删除括号,则会中断所有提供括号的现有用法。有

比如说,我设计了一些API,并在其定义中短视地给出了一个0-arity函数括号

类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