【发布时间】:2021-12-05 21:20:29
【问题描述】:
function check(str,arg;type=DataType,max=nothing,min=nothing,description="")
@argcheck typeof(arg)==type
@argcheck arg>min
@argcheck arg<max
@argcheck typeof(description)==String
return arg
end
function constr(name,arg,field)
return :(function $name($arg,$field)
new(check($name,$arg,$field))
end)
end
macro creatStruct(name,arg)
code = Base.remove_linenums!(quote
struct $name
end
end)
print(arg)
append!(code.args[1].args[3].args,[constr(name,arg.args[1].args[1],arg.args[1].args[2])])
code
end
macro myStruct(name,arg)
@creatStruct name arg
end
@myStruct test12 (
(arg1,(max=10))
)
在我上面的代码中,我试图构建一个macro,它创建一个struct,并且在结构中,您可以定义一个带有边界(最大值、最小值)和描述等的参数。
我收到此错误:
语法:"#141#max = 10" is not a valid function argument name
每次我尝试解决它时,都会收到另一个错误,例如:
LoadError: syntax: "struct" expression not at top level
所以,我认为我的代码/方法没有那么连贯。任何人都可以提出建议和/或其他方法。
【问题讨论】:
标签: macros julia syntax-error metaprogramming