Ich lerne Scala und war Programming in Scala Buch von Martin Odersky. Als ich Beispiel in Kapitel 10 versuchte, produziert es nicht das erwartete Ergebnis. Ich habe versucht, den Code ein bisschen hier und da zu modifizieren, ohne Glück. Kann mir jemand sagen, wo ich falsch liege?Spiral Beispiel aus der Programmierung in Scala scheint nicht zu funktionieren
import Element.elem
object Spiral {
val space = elem(" ")
val corner = elem("+")
def spiral(nEdges: Int, direction: Int): Element = {
if(nEdges == 1)
corner
else {
val sp = spiral(nEdges - 1, (direction + 3) % 4)
//println("H: " + sp.height + " W: " + sp.width + " D " + direction)
def verticalBar = elem('|', 1, sp.height - 1) //updated based on google errata which was otherwise def verticalBar = elem('|', 1, sp.height)
def horizantalBar = elem('-', sp.width, 1)
if(direction == 0)
(corner beside horizantalBar) above (sp beside space)
else if (direction == 1)
(sp) beside (corner above verticalBar) //updated based on google errata which was otherwise (sp above space) beside (corner above verticalBar)
else if (direction == 2)
(space beside sp) above (horizantalBar beside corner)
else
(verticalBar above corner) beside (sp) //updated based on google errata which was otherwise (verticalBar above corner) beside (space above sp)
}
}
//Not working as expected, need to debug and fix
def main (args: Array[String]) {
val nSides = args(0).toInt
println(spiral(nSides, 0))
}
}
Hier wird die bei der Ausführung erwartet mit 14 als Argument
+-------------
|
| +---------+
| | |
| | +-----+ |
| | | | |
| | | +-+ | |
| | | + | | |
| | | | | |
| | +---+ | |
| | | |
| +-------+ |
| |
+-----------+
Was ich
+-------------
| +---------+
Was * ist * das erwartete Ergebnis? Was bekommst du? –
Ups vergessen zu zitieren, was nicht funktioniert – Rukmaj