Aufgabe 10.8: Closest Pair

dist-Methode mit in unser ClosestPair-Objekt?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Aufgabe 10.8: Closest Pair
Hallo zusammen!

Sollen/dürfen wir bei der ClosestPair-Aufgabe die dist-Methode aus dem Objekt ClosestPairSkeleton mit in unser Objekt, das wir abgeben, reinziehen oder sollen wir die Methode immer über ClosestPairSkeleton.dist aufrufen?

Danke! :slight_smile:


Wenn du ClosestPairSkeleton richtig importierst ([m]import ClosestPairSkeleton._[/m]), dann kannst du die Funktion [m]dist[/m] ohne ein vorheriges [m]ClosestPairSkeleton[/m] aufrufen.


In Eclipse funktioniert das Importieren von ClosestPairSkeleton.scala. Wenn ich in der Console [m]scala -i[/m] und danach [m]:load ClosestPair.scala[/m] ausfuehre, dann kommt eine Fehlermeldung. Was muss man in so einem Fall in die Console eingeben?


Hmmmm. wenn ich s mit scalac versuche kommt bei mir

Die Skeleton-Datei liegt im gleichen Verzeichnis.


ich verwende gern einen bash-alias der aufgelöst wird zu:

$ scala -J-Xmx2048M -Yrepl-sync -feature -deprecation -i ClosestPairSkeleton.scala ClosestPair.scala
Loading ClosestPairSkeleton.scala...
defined object ClosestPairSkeleton

Loading ClosestPair.scala...
import ClosestPairSkeleton._
defined object ClosestPair

Welcome to Scala version 2.11.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_60).
Type in expressions to have them evaluated.

ungefähr so:
[m]alias scalaREPL=‚/scala/bin/scala -J-Xmx2048M -Yrepl-sync -feature -deprecation -i‘[/m]
und für Akka gleich ein Shell-Script in etwa so:

#!/bin/bash

SCALA="<path1>/scala/bin/scala"
AKKA_LIBS="<path2>/scala-akka/lib/akka"

AKKA_CLASSPATH="."
# AKKA_CLASSPATH=$AKKA_CLASSPATH:$(find $AKKA_LIBS/akka-actor_*.jar)
AKKA_CLASSPATH=$AKKA_CLASSPATH:$(find $AKKA_LIBS/akka-remote_*.jar)
# AKKA_CLASSPATH=$AKKA_CLASSPATH:$(find $AKKA_LIBS/config-*.jar)
AKKA_CLASSPATH=$AKKA_CLASSPATH:$(find $AKKA_LIBS/netty-*.jar)
AKKA_CLASSPATH=$AKKA_CLASSPATH:$(find $AKKA_LIBS/protobuf-*.jar)
AKKA_CLASSPATH=$AKKA_CLASSPATH:$(find $AKKA_LIBS/../scala-library.jar)

echo "$AKKA_CLASSPATH"
$SCALA -classpath "$AKKA_CLASSPATH" -feature -deprecation -i "$@"

Dein Problem ist, dass die :-Befehle im Scala Interpreter in Eclipse nicht funktionieren. Wenn du die ganze Klasse rein laden willst, dann markiere sie komplett und drück oben auf Run Selection in Scala Interpreter (Ctrl+Shift+X).
Oder du markierst nur die Teile, die du wirklich brauchst.


Oder man kopiert ganz einfach die dist Methode :wink:


… oooder, man macht keine [m]class[/m], sondern ein [m]object[/m] (wie es in der Aufgabenstellung steht) und lässt es von [m]App[/m] erben. Dann ist das ganze ausführbar und man kann sich den Interpreter schenken. Die Tests schreibt man einfach mit rein (natürlich in einem Debug-Block oder so).