- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个宏,该宏调用在同一模块中定义的函数(使用 Julia v1.1)。我总是得到 ERROR: LoadError: UndefVarError: myModel not defined
.
该模块的代码如下(Models.jl):
module Models
export Model
export createmodel
export add_variable
export @add_variable
mutable struct Model
variable_symbols::Dict{String, Symbol}
variable_data::Dict{Symbol, Array{Int64, 1}}
Model(; variable_symbols = Dict([]), variable_data = Dict([])) =
new(variable_symbols, variable_data)
Model(variable_symbols, variable_data) = new(variable_symbols,
variable_data)
end
function createmodel()
model = Model()
return model
end
function add_variable(model, label::String, value::Array{Int64, 1})
symbol = Symbol(label)
model.variable_symbols[label] = Symbol(symbol)
model.variable_data[symbol] = value
end
macro add_variable(model, var)
quote
add_variable($model, $(string(var)), $var)
end
end
end
include("Models.jl")
using .Models
x = [1, 2, 3]
myModel = createmodel()
@add_variable(myModel, x)
show(myModel)
Model(Dict("x"=>:x), Dict(:x=>[1, 2, 3]))
最佳答案
你只需要 esc
ape传入宏的变量:
macro add_variable(model, var)
quote
add_variable($(esc(model)), $(string(var)), $(esc(var)))
end
end
esc
他们 — 带有
esc
它们是在调用者的上下文中解决的。你几乎总是想要
esc
宏的参数。像
add_variable
这样的名字,但是,您希望在定义宏本身的位置进行解析。
关于julia - 'UndefVarError : x not defined' when calling a macro outside of its module (Julia v1. 1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54412400/
不清楚为什么我得到ERROR: LoadError: UndefVarError: subtypes not defined执行 .jl 文件时,而不是从 REPL 执行时。 例如。 abstract
我有一段代码可以在循环外工作,但在循环内失败。 参见: julia> margin = 1 1 julia> rat = [-0.3 ; -0.8] 2-element Array{Float64,1
我正在读硕士类(class)。 我有一个在 julia-0.3.6 版本中运行的程序文件。 我在 linux 中将 Julia 程序升级到了 0.5.0 版,但是文件没有运行。 f=open("../
我有一段代码可以在循环外工作,但在循环内失败。 参见: julia> margin = 1 1 julia> rat = [-0.3 ; -0.8] 2-element Array{Float64,1
我使用 julia 1.4,并运行以下代码: using PyCall using JLD using ArgParse using Pandas @pyimport networkx as nx @
我正在尝试运行(其他人的代码),看起来像 function f{T function f{T<:Number}(n::Int, alpha::T, beta::T) print(
for i in 1:2 if i == 2 print(x) end if i == 1 x = 0 end end UndefVar
在 ubuntu 16.04 上,我从以下位置下载了 julialang 1.0 二进制包 https://julialang.org/downloads/ ,并将其提取到: /usr/local/j
我正在尝试在 Julia-Lang 中使用多线程(或更好的多处理器)。仅仅使用 Base.Threads 只会让我的应用程序变慢,所以我想尝试分布式。 module Parallel # ... in
返回矩阵中最小权重路径的路径元组的作业问题。但是代码给我一个错误:UndefVarError st not defined? 我试过在没有 for 循环的情况下运行程序,并只返回 s,这很有效。 fu
我试图从 Meshes.jl 测试源代码中运行一些代码,但它失败了。我错过了什么? using Meshes points = P2[(0,0), (1,0), (0,1), (1,1), (0.5,
我在 https://quantecon.org/ 中练习 Julia 的代码使用 Ubuntu,但遇到以下错误问题。 当我实现一些代码时,会出现一条错误消息,阅读 ERROR: UndefVarEr
我正在尝试在 https://github.com/JuliaDiffEq/NeuralNetDiffEq.jl/blob/master/test/NNODE_tests.jl 中运行示例代码(关于标
我正在使用 Julia 1.5.3 和模块 DataFrames.jl (v0.22.0) 和 Compat.jl (v3.23.0) 的最新版本。 我像往常一样将 DataFrames 添加到我的项
我是 Julia 的新手,我想查看数据框的前 5 行,但是当我编写下面的代码时 head(df,5) 我正进入(状态 UndefVarError: head not defined 最佳答案 he
我安装了 Julia 1.0,想制作一个简单的 plotly 。第一步是在 Julia 上输入: Pkg.add("PyPlot") 但是,出现错误: ERROR: UndefVarError: Pk
我正在尝试编写一个宏,该宏调用在同一模块中定义的函数(使用 Julia v1.1)。我总是得到 ERROR: LoadError: UndefVarError: myModel not defined
我是一名优秀的程序员,十分优秀!