gpt4 book ai didi

julia - 在 Julia 中生成函数

转载 作者:行者123 更新时间:2023-12-05 03:28:44 25 4
gpt4 key购买 nike

我有两个功能

"This is my docstring for `add_1(x)`"
add_1(x) = x + 1

"This is my docstring for `add_2(x)`"
add_2(x) = x + 2

这两个函数的代码惊人地相似,因此在 Julia 中一定有一种巧妙的方法来自动创建它们。

附带问题:如果这些函数是以编程方式生成的,那么错误将如何解决?通常堆栈跟踪显示原始文件中的行号,但这里从同一行生成了几个函数。它也会始终显示相同的行号吗?

最佳答案

一个解决方案是这样

["""
"This is my docstring for \`add_$i(x)\`"
add_$i(x) = x + $i
""" for i ∈ 1:3] .|> Meta.parse .|> eval

然而,关于行号,我被卡住了。这是你故意造成错误的结果:

julia> add_3("arstoen")
ERROR: MethodError: no method matching +(::String, ::Int64)
Closest candidates are:
+(::Any, ::Any, ::Any, ::Any...) at operators.jl:560
+(::T, ::T) where T<:Union{Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8} at int.jl:87
+(::LinearAlgebra.UniformScaling, ::Number) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/LinearAlgebra/src/uniformscaling.jl:145
...
Stacktrace:
[1] add_3(x::String)
@ Main ./none:2
[2] top-level scope
@ REPL[8]:1

还有其他人知道让堆栈跟踪变得合理的方法吗?

关于julia - 在 Julia 中生成函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71178573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com