我有一个关于诡计的问题
new PrintWriter("/tmp/some.file") { write("file contents"); close }
Run Code Online (Sandbox Code Playgroud)
我从这篇有趣的帖子中学到了:Scala:在一个语句中将字符串写入文件
这项技术效果很好(对于测试代码),但是我对Scala中语法上发生的事情感到有些困惑.
PrintWriter是一个java类......但它看起来像是一个代码块被传递给print writer实例,并且隐式地在该实例上执行方法调用.PrintWriter java类定义没有带有功能块的apply()方法.
那么..我很困惑签证vi Scala的语法
谢谢 !
这是有效的,因为您正在有效地创建一个扩展PrintWriter类的匿名对象.代码write("file contents"); close
只是这个匿名对象的构造函数的一部分.
scala> val writer = new PrintWriter("/tmp/some.file") { write("file contents"); close }
writer: java.io.PrintWriter = $anon$1@6c07add6
scala> writer.getClass.getName
res4: String = $anon$1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
551 次 |
最近记录: |