在我的程序中,我正在读取单元测试的资源文件。我使用文件路径为:
\\\path\\\to\\\file
Run Code Online (Sandbox Code Playgroud)
在我的机器(Windows)上运行良好。但在服务器(Unix)上,这失败了,我必须将其更改为:/path/to/file
但Java 应该是平台无关的。那么这样的行为是不是出人意料呢?
我正在尝试编写一个递归求和函数:
val sumRecursive = (list: List[Int]) => list match {
case Nil => 0
case x::xs => x + sumRecursive(xs)
}
Run Code Online (Sandbox Code Playgroud)
它给出错误:
错误:(16, 23) 递归值 sumRecursive 需要类型 case x::xs => x + sumRecursive(xs)
我知道递归函数需要声明其返回类型。但我不确定如何在这个代码结构中做到这一点。
阅读基于 actor 的编程,我遇到了基于线程的 actor 和事件驱动的 actor。
两者有什么区别?什么时候使用哪个?
我正在开发一个角度应用程序。应用程序由一个父组件组成,该父组件又包含多个子组件。每个子组件负责屏幕的一部分,如顶栏、侧栏、底栏等。
我有一个要求,我必须根据父组件中的某些状态将某些子组件灰化,以便用户无法对这些组件视图执行任何操作。
如何做到这一点?我知道 ng-disabled 用于禁用视图元素,但它不能用于 div。那么有哪些更好的选择呢?
我处理异常如下:
def calculate(input: Option[Double]): Try[String] =
Try {
input match {
case (Some(value)) => value.toString
case (None) => throw new IllegalArgumentException("No value found")
}
}
Run Code Online (Sandbox Code Playgroud)
在客户端代码中:
val result = calculate(....)
result match {
case Success(i) => println(i)
case Failure(s) => throw s // or log(s) to log the issue and continue
}
Run Code Online (Sandbox Code Playgroud)
对于干净优雅的代码库,它是足够好的实践还是可以做得更好?
我的系统上安装了 pom 和 jdk 11 中的 aspectj-maven-plugin:1.11。Jdk 11 在 lib 目录中没有 tools.jar。这导致 maven 构建失败并出现错误:
[错误] 无法执行目标 org.codehaus.mojo:aspectj-maven-plugin:1.11:compile (default) on project groundtruth-storage-writer: 目标 org.codehaus.mojo 的执行默认:aspectj-maven-plugin:1.11 :compile failed: Plugin org.codehaus.mojo:aspectj-maven-plugin:1.11 或其依赖项之一无法解析:在指定路径找不到工件 com.sun:tools:jar:11.0.7 ...\ Java\jdk-11.0.7/../lib/tools.jar
如何解决这个问题?
有一个答案在这里,但超过2岁。
我有一个字符串选项,它也可能是空的。我编写了以下代码来处理不同的流程分支:
input match {
case Some(val) => {
val match {
case "sayHi" => "Hi"
case "sayHello" => "Hello"
case _ => extractFromAnotherInput
}
}
None => extractFromAnotherInput
}
private def extractFromAnotherInput = {
anotherInput match {
case a => ....
case b => ....
}
}
Run Code Online (Sandbox Code Playgroud)
这是在函数式语言中处理代码分支的好方法还是可以以更好的方式完成?
从马丁·奥德斯基(Martin Odersky)的《斯卡拉编程》一书中:
另一个有用的容器对象是元组。像列表一样,元组是不可变的,但是与列表不同,元组可以包含不同类型的元素。
但是我可以有:
val oneTwoThreee = List(1, 2, "Third Element") //same as:List.apply(1,2,3)
for (i <- 0 to 2) {
println(oneTwoThreee.apply((i)))
}
Run Code Online (Sandbox Code Playgroud)
其输出为:
1
2
Third Element
Run Code Online (Sandbox Code Playgroud)
因此,Scala中的List可以具有不同类型的元素。
从同一本书:
您可能想知道为什么您无法访问元组的元素(如列表元素),例如,使用“ pair(0)”。原因是列表的apply方法始终返回相同的类型,但是元组的每个元素可能是不同的类型:
但是如上面的代码所示,List.apply()可以返回不同的类型。
我在这里是否缺少有关Scala中的List和Tuple的信息?