Ich schreibe eine Funktion, die ich einfacher schreiben und lesen könnte, wenn sie abhängig von Eingabe- oder Laufzeitwerten von Variablen eine andere Funktion definieren könnte (und diese dann verwenden) Funktion). Im Folgenden wird die Idee (auch wenn in einer Funktion eine Funktion definieren, die in diesem einfachen Beispiel keinen Vorteil ist): entwederWie definiere ich eine Funktion innerhalb einer Funktion in Abhängigkeit von Variablenwerten?
julia> function f(option::Bool)
if option
g() = println("option true")
g()
else
g() = println("option false")
g()
end
end;
WARNING: Method definition g() in module Main at REPL[1]:3 overwritten at REPL[1]:6.
julia> f(true)
option false
julia> f(false)
ERROR: UndefVarError: g not defined
in f(::Bool) at .\REPL[1]:7
Mit der vollen function
... end
Syntax für g
hilft nicht.
Die Frage ist: mache ich etwas falsch, um diese Warnung und dieses unbeabsichtigte Verhalten zu bekommen, oder Julia erlaubt dies nicht aus einem Grund? Und wenn es möglich ist, wie?
N.B. Für mein gegenwärtiges Bedürfnis kann ich einfach zwei verschiedene Funktionen definieren, g1 und g2, und es scheint zu funktionieren; aber was wäre, wenn es viele Fälle von g
für nur ein Aufgabenkonzept gäbe? Ich dachte, dass eine Funktion, die ein Objekt der ersten Klasse ist, frei gehandhabt werden kann: einer Variablen zugewiesen, die in Abhängigkeit von den Bedingungen definiert oder überschrieben wird, usw.
P.S. Ich weiß, dass ich einen String komponieren und dann analysieren kann, aber das ist eine hässliche Lösung.