我试图理解为什么在将时区转换为UTC时我得到这些结果:
In [74]: d1 = datetime(2007, 12, 5, 6, 30,tzinfo=pytz.timezone('US/Pacific'))
In [75]: d1
Out[75]: datetime.datetime(2007, 12, 5, 6, 30, tzinfo=<DstTzInfo 'US/Pacific' LMT-1 day, **16:07:00 STD**>)
In [76]: d1.astimezone(pytz.utc)
Out[76]: datetime.datetime(2007, 12, 5, 14, 23, tzinfo=<UTC>)
Run Code Online (Sandbox Code Playgroud)
为什么早上6:30成为下午2:23?
另一方面,如果我使用以下方法,我得到预期的结果:
In [90]: d2 = datetime(2007, 12, 5, 6, 30)
In [91]: uspac = pytz.timezone('US/Pacific')
In [92]: d2_aware = uspac.localize(d2)
In [94]: d2_aware.astimezone(pytz.utc)
Out[94]: datetime.datetime(2007, 12, 5, 14, 30, tzinfo=<UTC>)
Run Code Online (Sandbox Code Playgroud) 假设我有以下元组:
scala> val t1 = Tuple2("abcd", "efg")
t1: (java.lang.String, java.lang.String) = (abcd,efg)
scala> val t2 = Tuple2(1234, "lmnop")
t2: (Int, java.lang.String) = (1234,lmnop)
scala> val t3 = Tuple3("qrs", "tuv", "wxyz")
t3: (java.lang.String, java.lang.String, java.lang.String) = (qrs,tuv,wxyz)
Run Code Online (Sandbox Code Playgroud)
是否有一种友好的方式将它们(必要时分两步)组合成一个Tuple7?我真的在寻找一个结合任意大小的元组的一般答案,并意识到由于最大元组大小的上限会有限制.我特意寻找一个元组结果,而不是一个集合.
是否可以在sbt(0.11.2)内以交互方式在一个或多个类上运行scalac -print的等效项?
Heiko Seeberger在这里写了一篇关于类别理论的精彩博文:
https://hseeberger.wordpress.com/2010/11/25/introduction-to-category-theory-in-scala/
在其中,他定义了一个GenericFunctor,如下所示:
trait GenericFunctor[->>[_, _], ->>>[_, _], F[_]] {
def fmap[A, B](f: A ->> B): F[A] ->>> F[B]
}
Run Code Online (Sandbox Code Playgroud)
我没有运气找到文档中对 - >>和 - >>>符号的文档引用.有人可以解释一下他们在做什么吗?
假设我有两个使用相同名称和返回定义的方法,但是不同的参数:
def overload(x: Int) = x.toString
def overload(s: String) = s
Run Code Online (Sandbox Code Playgroud)
现在我想将其中一个转换为函数.如果方法没有重载,我会这样做:
val f = overload _
Run Code Online (Sandbox Code Playgroud)
但事实上,编译器正确地抱怨了一个含糊不清的引用.除了重命名其中一个之外,有没有办法让一个或另一个重载方法的功能?
谢谢!
约翰
我对scala和jodatime都比较陌生,但两者都给人留下了深刻的印象.我想弄清楚是否有更优雅的方法来做一些日期算术.这是一个方法:
private def calcDuration() : String = {
val p = new Period(calcCloseTime.toInstant.getMillis - calcOpenTime.toInstant.getMillis)
val s : String = p.getHours.toString + ":" + p.getMinutes.toString +
":" + p.getSeconds.toString
return s
}
Run Code Online (Sandbox Code Playgroud)
我将所有内容转换为字符串,因为我将它放入MongoDB,我不知道如何序列化joda持续时间或句点.如果有人知道我真的很感激答案.
无论如何,calcCloseTime和calcOpenTime方法返回DateTime对象.将它们转换为Instants是我发现的最好的方法.有没有更好的办法?
另一个问题:当小时,分钟或秒是单个数字时,结果字符串不是零填充.是否有一种简单的方法使字符串看起来像HH:MM:SS?
谢谢,约翰
在Akka 2.0中,是否有一种很好的方法可以关闭路径/用户下的所有actor?例如,假设我执行以下操作:
val system = ActorSystem.create("mySystem")
system.actorOf(Props(new MyActor1), "actor1")
system.actorOf(Props(new MyActor2), "actor2")
Run Code Online (Sandbox Code Playgroud)
一段时间后,我决定要阻止系统中的所有演员.如果我理解正确的话,actor1和actor2将是路径/用户的子节点,但我没有看到一个方法,它给了我一个ActorRef子节点的迭代.还有另外一种方法吗?
我有一个catch块,我最后重复了一下,并发现这个SO问题确认我可以使用部分函数作为catch块(Scala 2.9的尝试有什么用例... catch generalization? 1) .
目前,我的代码如下所示:
var task = newTask("update product", "update for customer " + customerId.toString)
try {
val vcdRouter = actorSystem.actorFor("user/supervisor/router-10.10.10.10:443")
val vdcId = new UUID("92ddba5e-8101-4580-b9a5-e3ee6ea5718f")
val vdcGet = sendExpect[AdminVdcType](vcdRouter, GetVdc(vdcId))
val vdcPut = VdcPutConfig(vdcGet, c)
val vdcPutTask = sendExpect[TaskType](vcdRouter, UpdateVdc(vdcId, vdcPut))
task = task.copy(Progress = 100, status = SuccessType)
} catch {
case failure: NoResponseBodyException =>
logger.debug("*** In putCustomerProduct, got a Left(VcdGatewayException)")
task = task.copy(Progress = 100, status = Error, Error = Option(exceptionToError(failure, BadGateway)))
case …Run Code Online (Sandbox Code Playgroud) 我被casbah发现难倒了.我试图在date1和date2之间从MongoDB中撤回所有文档.这是一组mongo文档的示例:
{ "_id" : NumberLong("1285248838000"), "openTime" : "Thu Sep 23 2010 06:33:58 GMT-0700 (PDT)", "closeTime" : "Thu Sep 23 2010 06:36:15 GMT-0700 (PDT)", "timeInTrade" : "00:02:17", "direction" : "Long", "size" : 1, "outcome" : "Loss" }
{ "_id" : NumberLong("1285595711000"), "openTime" : "Mon Sep 27 2010 06:55:11 GMT-0700 (PDT)", "closeTime" : "Mon Sep 27 2010 06:57:37 GMT-0700 (PDT)", "timeInTrade" : "00:02:26", "direction" : "Short", "size" : 1, "outcome" : "Win"}
{ "_id" : NumberLong("1285594773000"), "openTime" : "Mon Sep 27 2010 …Run Code Online (Sandbox Code Playgroud) 我有一个带有多个子项目的SBT项目。除非我明确执行“; project xyz; test-only”之类的操作,否则其中一个子项目具有我不希望运行的测试。因此,如果我的项目结构是:
主main / abc main / def main / xyz
理想情况下,在main中运行“ test”将在main,main / abc和main / def项目中执行任何测试,但不会在main / xyz中执行。
我试图在构建文件中为主类添加一个测试过滤器,以排除main / xyz中的所有测试(按包名),然后在main / xyz项目中添加一个单独的build.sbt文件以将其添加回去,但这仍然导致从顶级项目执行测试...