如何访问函数的主体?
背景:我在模块内有一些函数,我会使用特定的参数值来执行这些函数。我想要“记录”这些参数值和相应的函数形式。以下是我的尝试:
module MyModule
using Parameters # Parameters provides unpack() macro
using DataFrames # DataFrames used to store results in a DataFrame
struct ModelParameters
γ::Float64
U::Function
end
function ModelParameters(;
γ = 2.0,
U = c -> if γ == 1.0; log(c); else (c^(1-γ)-1)/(1-γ) end
)
ModelParameters(γ, U)
end
function show_constants(mp::ModelParameters)
@unpack γ = mp
d = DataFrame(
Name = ["γ"],
Description = ["parameter of U"],
Value = [γ]
)
return(d)
end
function show_functions(mp::ModelParameters)
@unpack U = mp
d = DataFrame(
Name = ["U"],
Description = ["function with parameter γ"],
Value = [U]
)
return d
end
export
ModelParameters
show_constants,
show_functions
end # end of MyModule
保留记录:
using Main.MyModule
mp = ModelParameters()
MyModule.show_constants(mp)
1×3 DataFrame
Row │ Name Description Value
│ String String Float64
─────┼─────────────────────────────────
1 │ γ parameter of U 2.0
MyModule.show_functions(mp)
1×3 DataFrame
Row │ Name Description Value
│ String String #2#4…
─────┼──────────────────────────────────────────
1 │ U function with parameter γ #2
这对于存储标量和数组值非常有用,但不适用于函数。我该如何用实用的东西替换#2
?
以下是有用的示例:
c -> if γ == 1.0; log(c); else (c^(1-γ)-1)/(1-γ) end,
或者
(c^(1-2.0)-1)/(1-2.0)
或者(神奇地简化):
1-c^(-1.0)
我的问题与Julia:显示函数主体(以查找丢失的代码)有些相关。