...
PlantUML Macro |
---|
object rpncalc2 {
operands = []
hasOperands(n)
plus()
token = "+"
operand = ...
}
object "1: plus" as plus1 {
}
rpncalc2 <-left- plus1 |
| plus-funksjonen er akkurat kalt fra elif-grenen i while-løkka. plus-arket refererer til rpncalc2-arket, fordi plus-funksjonen selv er definert i rpncalc2-arket. Dermed kan koden i plus-funksjonen referere til variabler (og funksjoner) i rpncalc2-arket. |
PlantUML Macro |
---|
object rpncalc2 {
operands = []
hasOperands(n)
plus()
token = "+"
operand = ...
}
object "1: plus" as plus1 {
}
object "1: hasOperandhasOperands" as hasOperand1hasOperands1 {
n = 2
}
rpncalc2 <-- plus1
rpncalc2 <-- hasOperand1hasOperands1 |
| plus-funksjonen har akkurat kalt hasOperands. Vi har nå to aktive funksjonsark, og merk hvordan begge refererer til rpncalc2-arket, fordi både plus- og hasOperands-funksjonene selv er definert der. Men selv om hasOperands-arket ble aktivert av plus-funksjonen, så refererer det ikke til plus-arket. |
...
Code Block |
---|
| operands = []
def isOperand(token): ...
def hasOperands(n): ...
def plus(): ...
def minus(): ...
def main():
while (True):
...
print("program exited")
main() |
| PlantUML Macro |
---|
object rpncalc2 {
operands = []
hasOperands(n)
plus()
main()
}
object "1: main" as main1 {
token = "+"
operand = ...
}
object "1: plus" as plus1 {
}
object "1: hasOperandhasOperands" as hasOperand1hasOperands1 {
n = 2
}
rpncalc2 <-- main1
rpncalc2 <-- plus1
rpncalc2 <-- hasOperand1hasOperands1 |
|
For ordens skyld, nedenfor er hele rpncalc2-koden. Kjør den gjerne og sjekk at den virker! Har vi plantet noen feil i koden denne gangen?
...