在這個短序列中,用戶創建了一個函數userfunc()
,但隨後想要更新第一個定義以執行不同的操作。然而programfunc()
已經編譯了第一個版本,並繼續使用它。將更新函數傳遞給現有函數
userfunc(str, n) = str^n
userfunc("hello", 3)
"hellohellohello"
# program makes use of the user's function
programfunc(func, a, b) = func(a, b)
programfunc(userfunc, "hello", 3)
"hellohellohello"
# now the user redefines the function
userfunc(str, n) = str^(n * n)
# userfunc("hello", 3) give "hellohellohellohellohellohellohellohellohello"
# but program still makes use of the first userfunc()
programfunc(userfunc, "hello", 3)
"hellohellohello"
因此,如何能programfunc()
這樣定義:它總是使用傳遞給它的功能的最新定義是什麼?
[相關的問題(https://github.com/JuliaLang/julia/issues/265#issuecomment-242102435) – Gnimuc
@GnimucK 。啊,這是2011年的#265。固定爲0.6? – daycaster