scala Dauer: "Diese Klasse ist nicht als allgemeine Darstellung der Zeit gedacht, sie ist für die Bedürfnisse von scala.concurrent optimiert."

8

Ich habe das Scala-Dokument für die Klasse scala.concurrent.duration.Duration beginnt

  

Diese Klasse ist nicht als allgemeine Darstellung der Zeit gedacht, sie ist für die Bedürfnisse von scala.concurrent optimiert.

Warum sind die Auswirkungen dieser Aussage? Was ist eine bessere Alternative?

    
Mortimer 08.09.2013, 03:53
quelle

2 Antworten

4

Ich denke, ich bin teilweise dafür verantwortlich.

Das allgemeine Problem hier ist, dass das Zeitsystem schwierig ist. Wirklich, wirklich, wirklich hart.

Die Akka-Entwickler, die an der Standardisierung von Futures arbeiteten, benötigten ein Konstrukt, um die Länge zwischen zwei "anonymen" Zeitpunkten zu beschreiben, um ihre Funktionalität zu implementieren. Duration wurde erstellt, um diese spezifische Anforderung zu erfüllen.

Meine Sorge war, dass Leute diese zeitbezogene Klasse für Dinge verwenden könnten, die nicht dazu gedacht waren, uns in eine problematische Situation zu bringen, die mit java.util.Date / java.util.Calendar vergleichbar ist (nicht weil Duration tatsächlich für sie arbeitet Anwendungsfall, wo viele Menschen es als eine Art von% missbrauchen, die es nie sein sollte.

Deshalb hat es diese Notiz und ist in scala.time anstelle von e verpackt. G. scala.concurrent.duration .

Ich freue mich auf das Paket " scala.time ", das mit Java 8 geliefert wird. Es könnte in Zukunft möglich sein, dies zu standardisieren, was die Interoperabilität ein wenig verbessern würde und den zusätzlichen Vorteil hätte, dass es für einen viel breiteren Anwendungsfall ausgelegt wäre . (Es wird wahrscheinlich noch lange dauern, bis Scala Java 8 als Basis verwendet, aber ...)

    
soc 08.09.2013 17:25
quelle
4

Die Zeit kann je nach Bedarf auf verschiedene Arten dargestellt werden. Ich persönlich habe benutzt:

  1. Long - viele Tools nehmen es direkt
  2. Aktualisiert : java.time.* dank @Vladimir Matveev

    Das Paket wurde vom Autor von Joda Time (Stephen Colebourne) entworfen. Er sagt, es ist besser gestaltet.

  3. Joda Zeit

  4. java.util.Date

  5. Getrennte Klassenhierarchie:

    %Vor%
  6. Geordnete Zeitdarstellung:

    %Vor%
  7. Modellzeit. Ich hatte einmal ein globales Objekt Timer mit var currentTime:Long :

    %Vor%

    Und überall im Programm habe ich Timer.currentTimeMs aufgerufen, um die Zeit zu bekommen. Es erlaubt deterministische Tests mit kontrollierter Zeitverschiebung zu schreiben. (Vorsicht vor globalen Variablen! Jetzt bevorzuge ich separate Instanzen von Timer , um Nebenläufigkeitsprobleme zu vermeiden.)

Arseniy Zhizhelev 08.09.2013 09:08
quelle