我正在对一些案例类进行匹配,并希望以相同的方式处理其中两个案例.像这样的东西:
abstract class Foo
case class A extends Foo
case class B(s:String) extends Foo
case class C(s:String) extends Foo
def matcher(l: Foo): String = {
l match {
case A() => "A"
case B(sb) | C(sc) => "B"
case _ => "default"
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我得到错误:
(fragment of test.scala):10: error: illegal variable in pattern alternative
case B(sb) | C(sc) => "B"
Run Code Online (Sandbox Code Playgroud)
我可以使用它从B和C的定义中删除参数,但我怎样才能与params匹配?
什么时候java放弃了到URL的连接?我没有在URL或URLConnection上看到close()方法,所以它会在请求完成后立即释放连接吗?我主要是想在异常处理程序中查看是否需要进行任何清理.
try {
URL url = new URL("http://foo.bar");
URLConnection conn = url.openConnection();
// use the connection
}
catch (Exception e) {
// any clean up here?
}
Run Code Online (Sandbox Code Playgroud) 我有一个groovy脚本需要jar中的库.如何将其添加到类路径?我希望脚本可执行,所以我#!/usr/bin/env groovy在脚本的顶部使用.
我正在使用Subversion 1.5并在分支中有一个文件,我想合并到另一个分支.当我做一个svn merge http://path/to/file我得到一个错误,
无法替换目录.
这只是意味着Subversion无法做到这一点吗?
我有一个脚本需要在tomcat完成启动后运行并准备开始部署应用程序.我正在使用$TOMCAT_HOME/bin/startup.sh哪个立即返回.我怎么能等到tomcat完成启动?
我正在寻找一种方法将groovy脚本中的输出重定向到stderr:
catch(Exception e) {
println "Want this to go to stderr"
}
Run Code Online (Sandbox Code Playgroud) 使用subversion 1.5我有分支B,它从分支A分支出来.在两个分支中完成工作之后,我将合并从A到B的变化(svn merge http://path/to/A在B 的工作目录中使用)并得到svn: Target path does not exist.这是什么意思?
我刚刚开始使用iphone开发并遇到了一些使用@"somestring"的示例代码
someLabel.txt = @"string of text";
Run Code Online (Sandbox Code Playgroud)
为什么字符串需要'@'?我猜它是创建对象的某种捷径?
我有一块需要在几个地方使用的JSP代码(基本上是几个页面使用的小部件).什么是模块化的好方法?我宁愿不把它放在一个对象中,因为HTML的字符串操作变得很难看.使用<%@ include file="foo.jsp"%>是有问题的,因为我们结束了隐含的全局变量.
我在一个对象中有一些属性,我想添加到全局命名空间.在浏览器的javascript中,我可以将其添加到window对象中,如下所示:
var myObject = {
foo : function() {
alert("hi");
}
// and many more properties
};
for (property in myObject) {
window[property] = myObject[property];
}
// now I can just call foo()
foo();
Run Code Online (Sandbox Code Playgroud)
但由于rhino没有全局窗口对象,我无法做到这一点.有没有一个等效的对象或其他方式来实现这一目标?