2013-03-07 102 views
0

如果我想試試這個代碼練習斯卡拉如何處理的時間和日期,我應該在Eclipse中創建一個新的Scala應用程序或只是一個新的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

我試過日期,日曆和時間處理的蟒蛇,Java和C + +,我認爲這不是很好。 Python是最好的,因爲使用timestamp和timedelta來陳述你想要的東西相對容易,但是我認爲Java讓它變得令人困惑,迫使我們使用一個Calendar對象,而這在我們不需要在python中使用。現在我想嘗試在Scala中處理時間戳和時間來學習Scala。上面的代碼發佈了,我想嘗試一下。你可以幫我嗎?

enter image description here

我可以運行的代碼,並改變它在Eclipse中,現在我想嘗試寫我的測試情況下,或嘗試,無論哪個日期在未來的你,無限的未來仍然領先於日期。

回答

2

如果你真的想知道這個程序的輸出沒有任何麻煩,那麼你可以使用http://www.simplyscala.com/這是一個在線scala解釋器(scala 2.8)。 只需將您的代碼粘貼到編輯框中,然後單擊「評估」即可。然後輸入Main.main(Array.empty)並再次點擊「評估」。主程序將評估,你會得到你的結果。

然後,如果你真的打算學習scala,那麼Web上有足夠的關於使用Scala的Eclipse/IntelliJ/SBT的教程。一本好書可能也有幫助。

+1

Doh!事實證明,你已經得到了解決方案。在http://programmers.stackexchange.com/questions/164843上發佈代碼的人員還提供了一個鏈接到「ideone」(它也可以讓你編譯scala代碼):http://ideone.com/K5Kuk – 2013-03-08 00:07:18

+0

One可能更喜歡http://www.scalakata.com/而不是simplescala,因爲它更簡單得多(但與簡單的scala不同,它不顯示每個值,因此您必須明確地打印它們)並且具有可共享的片段:http:// www.scalakata.com/5139b09fe4b0d323913d1763。 – 2013-03-08 09:30:04

4

當地對口簡單的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. 

我始終有一個股票斯卡拉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> 
0

在Eclipse中,您還可以使用Scala worksheet。雖然Java日期/時間處理通常被認爲是糟糕的,但有一個非常廣泛使用的替代方法:Joda-TimeScala wrapper

+0

IDEA現在也具有工作表功能。 – 2013-03-08 14:34:56