変数の入力値または実行時の値によって別の関数を定義できる場合は、読み書きが容易な関数を記述しています関数)。フルfunction
が... g
ためend
構文はどちらか助けていません使用変数の値に応じて関数内の関数を定義する方法
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
:以下は、(関数内の関数を定義すると、この単純な例ではありません有利であっても)の考えを示しています。
質問は次のとおりです。私はその警告を得るには間違ったことをしています。意図しない振る舞い、またはジュリアはこれを理由で許可していませんか?それができれば、どうですか?
N.B.私の現在の必要性のために、私はg1とg2という2つの異なる関数を定義することができます。 1つのタスクコンセプトのために多くのケースがある場合はどうなりますか?私はファーストクラスのオブジェクトであるファンクションは自由に操作できると考えました。変数に割り当てられ、条件に応じて定義され、条件によって上書きされます。
P.S.私はStringを作成して解析することができますが、それは醜い解決策です。