scala之不带括号的对象方法调用

shihaiming 阅读:136 2025-02-15 21:57:57 评论:0

导入后是否可以调用不带括号的对象方法?

这是我的测试代码,基于 this article马丁·奥德斯基:

package gardening.fruits 
 
object PrintPlanted { 
  def main(args: Array[String]) { 
    // Call method on object 
    import gardening.fruits 
    fruits showFruit(apple) 
    fruits showFruit apple 
 
    // Import object 
    import gardening.fruits._ 
    showFruit(apple) 
 
    // showFruit apple 
 
    // Error: missing arguments for method showFruit in package fruits; 
    // follow this method with `_' if you want to treat it  
    // as a partially applied function 
  } 
} 

导入包对象后 fruits ,我可以调用方法 showFruit(apple) ,但是有没有什么方法可以像最后一段代码那样不带括号地调用该方法?

我在一些 DSL 中使用了这样的方法,使用括号有点烦人。欢迎您提出所有建议。

请您参考如下方法:

不,那是不可能的。 e1 op e2是所谓的中缀操作,相当于e1.op(e2) .当接收器( e1 )被排除在外时,这不起作用。出于同样的原因,您不能写出类似 println "hello" 的内容。 , 任何一个。


标签:Scala
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号