根据Ordered trait需求,equalsScala BigDecimal类的方法与排序一致.但是,哈希码只是从包装中获取java.math.BigDecimal,因此与equals不一致.
object DecTest {
def main(args: Array[String]) {
val d1 = BigDecimal("2")
val d2 = BigDecimal("2.00")
println(d1 == d2) //prints true
println(d1.hashCode == d2.hashCode) //prints false
}
}
Run Code Online (Sandbox Code Playgroud)
我找不到任何关于这是一个已知问题的提法.我错过了什么吗?
在for-loop中,我通过检索和处理车辆信息来控制基于模拟步骤的交通模拟器SUMO.为了确保我的程序"实时"模拟(1个模拟步骤= 1秒),我想在处理阶段之后睡眠我的程序,直到下一个步骤开始.为了获得更好的结果,我正在根据最初采用的参考时间戳计算时间戳.
循环看起来像这样:
System.out.println("start of traffic simulation ...");
for (int i = 0; i < stepCount; i++)
{
System.out.println("step: " + i);
// set before timeStamp
beforeTimeStamp = System.currentTimeMillis();
if (firstStep)
{
// get reference timeStamp
referenceTimeStamp = beforeTimeStamp;
firstStep = false;
}
else
{
// get next vehicleVector
vehicleVector = masterControl.traCIclient.simulateStep();
}
// process vehicleVector
// set after timeStamp
afterTimeStamp = System.currentTimeMillis();
processingTime = afterTimeStamp - beforeTimeStamp;
// calculate sleepTime
sleepTime = referenceTimeStamp + ((i + 1) * 1000) …Run Code Online (Sandbox Code Playgroud) 事实证明,使用ww作为java日期格式字符串的星期是2011年1月1日语言环境时的52 en_GB.这是证明(使用scala REPL,虽然我可以使用Java程序完成此操作)
首先得到我的语言环境
scala> val en = java.util.Locale.getAvailableLocales.find(_.toString == "en") getOrElse error("no en")
en: java.util.Locale = en
scala> val en_GB = java.util.Locale.getAvailableLocales.find(_.toString == "en_GB") getOrElse error("no en_GB")
en_GB: java.util.Locale = en_GB
Run Code Online (Sandbox Code Playgroud)
现在是1月1日
scala> import java.util.Calendar; import Calendar._
import java.util.Calendar
import Calendar._
scala> Calendar.getInstance
res23: java.util.Calendar = java.util.GregorianCalendar[time=1300708839128,....]
scala> res23.set(MONTH, JANUARY); res23.set(DAY_OF_MONTH, 1)
scala> val firstJan = res23.getTime
firstJan: java.util.Date = Sat Jan 01 12:00:39 GMT 2011
Run Code Online (Sandbox Code Playgroud)
现在声明一个方法以依赖于语言环境的方式打印它:
scala> def weekInLocale(l : java.util.Locale) = { java.util.Locale.setDefault(l); new …Run Code Online (Sandbox Code Playgroud) 我刚刚注意到,虽然在向地图添加一对时需要澄清一些parens,但在重新分配时我并不需要它们:
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) Server VM, Java 1.6.0_18).
Type in expressions to have them evaluated.
Type :help for more information.
Run Code Online (Sandbox Code Playgroud)
给我一些价值
scala> var n = Map.empty[Int, String]
n: scala.collection.immutable.Map[Int,String] = Map()
Run Code Online (Sandbox Code Playgroud)
尝试添加到地图而没有明确的括号:
scala> n + 1 -> ""
<console>:30: error: type mismatch;
found : Int(1)
required: (Int, ?)
n + 1 -> ""
^
Run Code Online (Sandbox Code Playgroud)
像我预期的那样失败.但通过重新分配做同样的事情不会:
scala> n += 1 -> ""
scala> n
res12: scala.collection.immutable.Map[Int,String] = Map(1 -> "")
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?为什么这不会失败?是scalac自己添加parens?
我们知道我们可以在scala中定义一个重复参数(varargs)函数,如下所示:
def func(s: String*) = println(s)
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在函数文字样式中重写上述内容.或者这样做不可能吗?
注意:(s: String) => println(s)不正确.
我想在一个程序中使用actor,我会对某些演员有一些限制,好像他们是队列一样.例如,假设我有一些应用了更改事件的外部系统,还有一些外部系统数据的缓存.所以我有两个演员:
ChangeApplicationActorCacheActor作为一部分ChangeApplicationActor,当我将更改应用于X外部系统中的某个实体时,我想发送一些事件来告诉CacheActor同步:
val changeApplicationActor = actor {
loop {
react {
case ChangeInstruction(x) =>
externalSystem.applyChange(x)
cacheActor ! Sync(x)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我现在有两个要求:
CacheActor具有内部状态和理想,我想它来处理其Sync指令顺序CacheActor包含两个Sync(x)相同值的指令的收件箱x,那么我想忽略第二个Sync指令(即我应该只有一个挂起的指令用于任何给定的值x)有没有办法强迫演员单线程?有什么方法可以访问演员的邮箱并删除任何重复的事件?难道我不能避免实施CacheActoras,嗯,不是演员吗?
当我对以下代码运行静态分析时:
public ExtractDBScripts(String resBundleName)
{
super();
m_mainBundle = ResourceBundle.getBundle(resBundleName);
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
"JAVA 0058构造函数'ExtractDBScripts'调用super()".
super()从构造函数调用有什么问题?
是否可以在不引发异常的情况下终止Java线程?
这仅用于测试目的 - 我想模拟整个计算机死于中间线程的情况.
注意 - 我看到了一个已弃用的Thread.destroy()方法,但文档说它从未实现过.
我正在使用Netbeans IDE进行java项目.在这个项目中,我需要一个jar文件"htmlunit-2.6.jar".
我已将此jar文件包含在项目库文件夹中.我已经实例化了它的一个类"WebClient",但是这个类需要其他类的"commons-httpclient-3.1.jar"文件.
现在我还在项目库文件夹中包含了"commons-httpclient-3.1.jar"文件.但是当我编译我的源文件时,它会抛出
ClassNotFoundException:org.apache.commons.httpclient.auth.CredentialsProvider
请告诉我如何在一个jar文件中的一个类需要其他jar文件中的其他类时处理这种情况.
看起来scala 2.7.5中没有partition方法Iterator(2.8中有).我想有一个分区不失懒惰的Iterator,所以下面是不是一个选项:
itr.toList.partition( someTest(_) )
Run Code Online (Sandbox Code Playgroud)
任何人都可以推荐一种方法,而无需实现我自己的partition方法吗?例如,是否有某种方法可以将其Iterator转换为延迟评估的Stream?