相关疑难解决方法(0)

如何创建用于在 Julia 中创建符号的宏

我试图在 Julia 中创建一个字符串文字宏来创建一个symbol,所以它s"x":x. 这是行不通的:

julia> macro s_str(p)
           symbol(p)
       end

julia> s'x'
ERROR: s not defined

julia> s"x"
ERROR: x not defined
Run Code Online (Sandbox Code Playgroud)

macros julia

6
推荐指数
3
解决办法
1233
查看次数

朱莉娅元编程返回符号

我想弄清楚如何有一个报价块,在评估时,返回一个符号.请参阅下面的示例.

function func(symbol::Symbol)
  quote
    z = $symbol
    symbol
  end
end

a = 1
eval(func(:a)) #this returns :symbol. I would like it to return :a
z
Run Code Online (Sandbox Code Playgroud)

julia

2
推荐指数
1
解决办法
203
查看次数

Julia:如何在与输入变量匹配的函数内创建符号?

我有一个Julia函数,它接受一些输入参数并使用它们来执行多个操作.为了使其中一个操作正常工作,我需要能够计算与用户输入匹配的符号.例如,函数看起来像这样:

function func(arg1,arg2)

    symb_arg1 =  ## get the symbol for input into arg1
    symb_arg2 =  ## get the symbol for input into arg2

    println(symb_arg1)
    println(symb_arg2)

    ## Do some operations using arg1, arg2, symb_arg1, symb_arg1

end
Run Code Online (Sandbox Code Playgroud)

我希望实现以下行为:

a = 25
b = rand(27,55,18)
func(a,b)  ## prints :a and :b
Run Code Online (Sandbox Code Playgroud)

这里的困难是让函数计算包含变量实际名称的符号,而不是变量的值.这篇文章提供了以下几乎可以实现我想要的宏:

macro mymacro(ex)
    Expr(:quote,ex) # this creates an expression that looks like :(:(x + 2))
end
Run Code Online (Sandbox Code Playgroud)

此宏适用于执行以下操作:

a = rand(27,15)
symb_a = @mymacro(a)  ## prints :a
Run Code Online (Sandbox Code Playgroud)

但是,在我的函数中使用此宏将不会产生所需的效果.具体来说,如果我将我的函数定义为:

function func_bad(arg1,arg2)

    symb_arg1 …
Run Code Online (Sandbox Code Playgroud)

macros julia

2
推荐指数
1
解决办法
206
查看次数

标签 统计

julia ×3

macros ×2