Ich habe so etwas wie die folgendenJulia passiert optionale Parameter zur inneren Funktionsaufruf
function test(; testvar=nothing)
# only pass testvar to function if it has a useful value
inner_function(testvar != nothing ? testvar2=testvar : # leave it out)
end
# library function, outside my control, testvar2 can't be nothing
function inner_function(; testvar2=useful value)
# do something
end
Ich weiß, dass ich verwenden können, wenn/else-Anweisungen innerhalb test()
aber inner_function
viele Parameter haben, so würde ich das von einem vermeiden bevorzugen Code-Duplizierungs-Standpunkt. Ist das möglich?
Hinweis:inner_function
nicht haben testvar2 = nothing
, wenn testvar2
geben wird es einen gültigen Wert haben muss.
Sie könnten die Variablen in ein Array oder ein Wörterbuch einfügen und "nichts" herausfiltern. Ist das die Art von was du meinst? –
Wie übergebe ich diese dann an 'innere_funktion' als Schlüsselwort = Argumentpaare? Denn das möchte ich erreichen. – tlnagy
@Higany Sie können '...' verwenden, um Schlüsselwortargumente zu übergeben, wie 'innere_funktion (; filter ((x, y) -> y! = Nichts, args) ...)' –