我正在尝试从我的Scala项目中读取一些文件,如果我使用:java.io.File(".").getCanonicalPath()我发现我当前的目录远离它们(我已经安装了Scala Eclipse的地方).那么如何将当前目录更改为项目的根目录,或者获取项目的路径?我真的不想拥有输入文件的绝对路径.
val PATH = raw"E:\lang\scala\progfun\src\examples\"
def printFileContents(filename: String) {
try {
println("\n" + PATH + filename)
io.Source.fromFile(PATH + filename).getLines.foreach(println)
} catch {
case _:Throwable => println("filename " + filename + " not found")
}
}
val filenames = List("random.txt", "a.txt", "b.txt", "c.txt")
filenames foreach printFileContents
Run Code Online (Sandbox Code Playgroud) 我在斯卡拉一个新手,并与懒惰的评价玩弄和这个问题跌跌撞撞:如果我想使懒惰的评估VALÇ作品,我写的虚拟变量一和b的声明之前Ç,这我考虑太多样板.我尝试在没有初始初始化的情况下声明a和b lazy val,但编译器抱怨.如果我写的东西:lazy val c = a:Double, b:Int也不起作用.
有没有办法摆脱这些虚拟变量?我能以更优雅的方式重构此代码吗?
var a = 0d; //> a : Double = 0.0
var b = 0; //> b : Int = 0
lazy val c = a / b //> c : Double = <lazy>
//some other code...
a = math.Pi
b = -1
(1 to 10).foreach(x => println(f"$x, ${x * c}%.8s"))
//> 1, -3.14159
//| 2, -6.28318
Run Code Online (Sandbox Code Playgroud)