【发布时间】:2021-04-02 12:23:02
【问题描述】:
我的问题是如何在 sbt 控制台 (Scala REPL) 中访问 DownloadFiles.fileURLList 属性?
我创建了一个 SBT Scala 项目,并将此代码放在 src/main/scala/DownloadFiles.scala
import sys.process._
import biz.neumann.url.NiceURLCodecs._
import java.net._
import java.io._
object DownloadFiles extends App {
val fileURLList = Array(
"https://www.example.com/file1.txt",
"https://www.example.com/file2.txt",
"https://www.example.com/file3.txt"
)
fileURLList.foreach(url => {
val fileName = "downloaded-files/" + new File(new URI(url).getPath).getName;
println(url.decode.encode + ": " + fileName)
new URL(url.decode.encode) #> new File(fileName) !!
})
}
我使用sbt console 打开了Scala REPL,当我访问DownloadFiles 对象的fileURLList 属性时,我得到如下所示的空值(未评估)。
scala> 下载文件.fileURLList
res0: Array[String] = null
我需要的是该对象的属性的评估值。
如果有帮助,这里是build.sbt:
scalaVersion := "2.12.10"
name := "image-downloader"
organization := "in.bhargav.inc"
version := "1.0"
libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2"
libraryDependencies += "biz.neumann" % "nice-url-encode-decode_2.12" % "1.5"
【问题讨论】:
-
这是
Hello扩展App的结果,它间接扩展了DalayedInit,从而改变了初始化语义。尝试将fileURLList声明为lazy,或在调用fileURLList之前调用DownloadedFiles.main(Array.emtpy)。查看相关stackoverflow.com/questions/66896016/… -
@MarioGalic 谢谢!就是这样。您可以将此作为答案发布吗?