Scala Var speichern/übergebn

Maurice Gop

Neues Mitglied
Hey,

ich hoffe einer von euch kann mir weiter helfen, ich häng da bei was ziemlich fest :(
Undzwar will ich in einer methode start() mit System.nanoTime die zeit "Speichern"
Java:
   def start():Long =
  {
		 return System.nanoTime()	  
  }

Nun will ich in der nächsten Methode wieder die "aktuelle" Zeit speichern und dann den Zeitunterschied ermitteln, und in sekunden Umrechnen (white ist eine klassen variabel). So:

Java:
  def weiss() = 
  {
    val ewz = System.nanoTime()
    val wz  = (ewz - (this.start))
    this.white = this.white - math.ceil((wz*math.pow(10,-9))).toInt
  }

So gut soweit das Problem ist ja jetzt das wenn ich in der 2. Methode this.start aufrufe nimmt er ja die selbe SystemZeit wie val ewz :(


Wie bau ich das um damit er das Tut was ich eigtl. will?
 

Spin

Top Contributor
Moin,

als Scala Anfänger eigent sich es sehr gut sich kurz mit mutable und immutable vars zu beschäftigen.
Anstatt val nutze var, dass hilft bei deinem Problem.

val ist für one assignment, also sobald das einmal zugewiesen wurde kannst du es nicht mehr ändern.

Java:
scala> val x = "hello"
x: java.lang.String = hello

scala> x = world
<console>:18: error: reassignment to val
       x = world

grüße spin
 

DrZoidberg

Top Contributor
Du kannst schreiben
Java:
val start = System.nanoTime()
...
def weiss() = 
  {
    val ewz = System.nanoTime()
    val wz  = (ewz - (this.start))
    this.white = this.white - (wz/1e9).toInt
  }

Aber ich vermute mal, dass das immer noch nicht das tut was du willst. Leider weiss ich nicht was genau du machen willst.

Übrigens, wenn du eine Methode zum Zeit messen benötigst. Die kann man so schreiben
Java:
def time[T](f: => T): T = {
  val start = System.nanoTime
  val r = f
  val end = System.nanoTime
  val time = (end - start)/1e6
  println("time = " + time +"ms")
  r
}
wird dann so verwendet
Java:
time {
  tuEtwas();
  tuNochEtwas();
  usw.
}
Und gibt dann aus wie lange der Codeblock (also in dem Fall tuEtwas() und tuNochEtwas()) für die Ausführung benötigt hat.
 

Neue Themen


Oben