对于使用第三方库,我需要一个w3c DOM文档.但是,在Scala中创建xml节点更容易.所以我正在寻找一种将scala xml元素转换为w3c dom的方法.显然,我可以序列化为一个字符串并解析它,但我正在寻找更高效的东西.
关于'::'案例类我有两个问题.
::可以用作
case head :: tail => ...
Run Code Online (Sandbox Code Playgroud)
它是如何工作的?意思是,Scala用于将List实例与:: case类匹配的流程究竟是什么?鉴于我有一个MyClass类,使用运算符op,我可以创建一个名为op的case类,我可以使用它作为:
case foo op bar => ....
Run Code Online (Sandbox Code Playgroud)
?
为什么scalac(Scala编译器)不优化尾递归?
代码和编译器调用,演示了这一点:
> cat foo.scala class Foo { def ifak(n: Int, acc: Int):Int = { if (n == 1) acc else ifak(n-1, n*acc) } } > scalac foo.scala > jd-gui Foo.class import scala.ScalaObject; public class Foo implements ScalaObject { public int ifak(int n, int acc) { return ((n == 1) ? acc : ifak(n - 1, n * acc)); } }
scala> val m = Map(1 -> 2)
m: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2)
scala> m.map{case (a, b) => (a+ 1, a+2, a+3)}
res42: scala.collection.immutable.Iterable[(Int, Int, Int)] = List((2,3,4))
Run Code Online (Sandbox Code Playgroud)
我想要的是结果类型是List [(Int,Int,Int)].我发现的唯一方法是:
scala> m.map{case (a, b) => (a+ 1, a+2, a+3)}(breakOut[Map[_,_], (Int, Int, Int), List[(Int, Int, Int)]])
res43: List[(Int, Int, Int)] = List((2,3,4))
Run Code Online (Sandbox Code Playgroud)
有更短的方式吗?
我刚才读过一篇博客文章,声称Java应用程序在允许使用多核计算机中的单个cpu时运行得更好:http://mailinator.blogspot.com/2010/02/how-i-sped-上我的服务器逐因子的-6.html
在多核计算机上运行的Java应用程序运行速度比单核计算机慢得多的原因是什么?
问题是为什么下面的代码不能用于类型推断(下面是一个REPL会话来演示),它可以修复吗?更具体地说,这与编译器用于推断返回类型的CanBuildFrom的使用有何不同?
鉴于此代码:
object S {
import java.net._
trait UrlLike[T] {
def url(s: String): T
}
object UrlLike {
implicit object str extends UrlLike[String]{def url(s: String) = s}
implicit object url extends UrlLike[URL]{def url(s: String) = new URL(s)}
implicit object uri extends UrlLike[URI]{def url(s: String) = new URI(s)}
}
trait UrlSupport {
val _url: String
def url[T : UrlLike]: T = implicitly[UrlLike[T]].url(_url)
}
}
Run Code Online (Sandbox Code Playgroud)
我在REPL(2.8.1)中有这个会话:
scala> :load c:\temp\UrlTest.scala
Loading c:\temp\UrlTest.scala...
defined module S
scala> import java.net._
import java.net._
scala> import S._ …
Run Code Online (Sandbox Code Playgroud) 我想使用功能切换范例.具体来说,我希望我的Spring上下文包含基于切换的不同bean定义.
我遇到过这个:http://robertmaldon.blogspot.com/2007/04/conditional-defining-spring-beans.html,看起来不错,但可能有点太麻烦了
我正在寻找替代方法以类型安全的方式获取属性名称.
例如,使用lambdaj,我可以这样做:
propertyName(on(Contract.class).getContractKey())
Run Code Online (Sandbox Code Playgroud)
但这有点冗长,性能也不是很好.
我希望在构建期间生成一些东西.
只需git
在命令提示符下(powershell)输入,需要2.5秒,直到它返回帮助消息.
我正在使用git for windows release,安装在C:\Program Files (x86)\Git
.当我使用cygwin(通过babun)时,我收到一个错误:Hint: your prompt is very slow. Check the installed 'BLODA' software.
也许这是相关的?如果是,我正在使用企业笔记本电脑,因此无法卸载防病毒软件或驱动程序软件,还有其他选择吗?
考虑以下代码:
function Foo() {
}
Foo.prototype.alert = function() {
alert(this);
}
(new Foo()).alert();
Run Code Online (Sandbox Code Playgroud)
执行时(在jsfiddle中),警报显示'this'是窗口对象.将最后一行更改为:
var foo = new Foo();
foo.alert();
Run Code Online (Sandbox Code Playgroud)
按预期工作.
为什么有区别?