0

如果我想尝试这段代码来练习 Scala 如何处理时间和日期,我应该在 Eclipse 中创建一个新的 Scala 应用程序还是只创建一个新的 Scala 类:

sealed abstract class SmartTime extends Ordered[SmartTime] { x =>
        def compare(y: SmartTime) = {
                x match {
                        case InfiniteFuture => 1
                        case InfinitePast => -1
                        case ConcreteTime(x) =>
                                y match {
                                        case InfiniteFuture => -1
                                        case InfinitePast => 1
                                        case ConcreteTime(y) => x compare y
                                }
                }
        }
}
case class ConcreteTime(t: Long) extends SmartTime
case object InfiniteFuture extends SmartTime
case object InfinitePast extends SmartTime

object Main {
        def main(args: Array[String]): Unit = {
                val y = ConcreteTime(100)
                val z = ConcreteTime(10)
                val x = InfiniteFuture
                val p = InfinitePast
                println(Vector(y, z, x, p).sortWith(_ < _))
        }
}

https://softwareengineering.stackexchange.com/questions/164843

我尝试了 python、java 和 C++ 的日期、日历和时间处理,我认为它们都不是很好。Python 是最好的,因为用时间戳和时间增量来说明你想要的内容相对容易,但我认为 Java 让我们感到困惑,迫使我们使用我们不必在 python 中使用的 Calendar 对象。现在我想尝试在 Scala 中处理时间戳和时间来学习 Scala。上面的代码已发布,我想尝试一下。你能帮助我吗?

在此处输入图像描述

我可以运行代码并在 Eclipse 中更改它,现在我想尝试编写我的测试用例或尝试无论您在未来的哪个日期,无限的未来仍然在那个日期之前。

4

3 回答 3

4

Simply Scala 的本地对应物是运行 Scala REPL:

% scala
Welcome to Scala version 2.10.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_17).
Type in expressions to have them evaluated.
Type :help for more information.

我总是有一个终端选项卡,其中运行着一个股票 Scala REPL。(我什至编写了一个脚本,它会自动重新启动它,以防我摸到 CTRL-D 或遇到结束 REPL 或 JVM 的错误。)

如果您有一个具有依赖项的项目并且您正在使用 SBT(您正在使用 SBT,对吗?),您可以启动一个 REPL,其类路径包含您的代码和您的依赖项,这非常方便!

% sbt
> console
[info] Compiling 1 Scala source to /Users/rschulz/Projects/scribble/target/scala-2.10/classes...
[info] Starting scala interpreter...
[info]
Welcome to Scala version 2.10.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_17).
Type in expressions to have them evaluated.
Type :help for more information.

scala>
于 2013-03-08T02:41:28.703 回答
2

如果你真正想要的是最快的方法来知道这个程序的输出是什么而没有任何麻烦,那么你可以使用http://www.simplyscala.com/,它是一个在线 scala 解释器(scala 2.8)。只需将您的代码粘贴到编辑框中,然后单击“评估”。然后输入Main.main(Array.empty)并再次单击“评估”。主程序将评估,你会得到你的结果。

然后,如果你真的打算学习 scala,网上有足够多的关于 Eclipse/IntelliJ/SBT 和 scala 使用的教程。一本好书也可能有帮助。

于 2013-03-07T23:34:57.207 回答
0

在 Eclipse 中,您还可以使用Scala 工作表

虽然 Java 日期/时间处理通常被认为很糟糕,但有一个非常广泛使用的替代方案:Joda-Time和一个Scala 包装器

于 2013-03-08T11:47:48.233 回答