可以在一行上使用多个宏吗?

西纳

是否知道是否可以在一行中使用多个宏?例如,

@devec, @inbounds [expr]

jrd1

是的,您可以,因为:

宏是在编译时用于生成表达式的函数的类似物。就像函数将参数值的元组映射到返回值一样,宏将参数表达式的元组映射到返回的表达式。使用以下通用语法调用宏:

@name expr1 expr2 ...
@name(expr1, expr2, ...)

这是一个使用两个众所周知的宏的示例(尽管有点荒谬):

# This is an assert construct very similar to what you'd find in a language like
# C, C++, or Python. (This is slightly modified from the example shown in docs)
macro assert(ex)
    return :($ex ? println("Assertion passed") # To show us that `@assert` worked
                 : error("Assertion failed: ", $(string(ex))))
end

# This does exactly what you expect to: time the execution of a piece of code
macro timeit(ex)
    quote
        local t0 = time()
        local val = $ex
        local t1 = time()
        println("elapsed time: ", t1-t0, " seconds")
        val
    end
end

但是,请分别注意以下两个成功的宏调用(即,不要抛出任何错误):

@assert factorial(5)>=0
@timeit factorial(5)

并且,现在一起:

@timeit @assert factorial(5)>=0

因为最右边的宏没有引发错误,所以上面的行将返回factorial(5)执行和断言所花费的总时间

但是,需要注意的重要一点是,当其中一个宏发生故障时,调用堆栈中其他宏的执行当然会终止(应该如此):

# This will throw an error (because we explicitly stated that @assert should
# do so. As such, the rest of the code did not execute.
@timeit @assert factorial(5)<0

再次,这是一个愚蠢的示例,但说明了以上几点并解决了您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可以在一行上使用多个宏吗?

来自分类Dev

我可以在一行上的多个变量上使用+ =吗?

来自分类Dev

我可以在同一行上编写多个汇编指令吗?

来自分类Dev

我可以在一行上写多个raku型智能匹配吗

来自分类Dev

您可以在一行上调用多个方法吗?

来自分类Dev

我可以以某种方式在Swift的一行中对多个变量使用可选绑定吗?

来自分类Dev

可以使用 CSS Flexbox 在每一行上拉伸元素,同时保持一致的宽度吗?

来自分类Dev

Ruby-在一行上使用多个条件

来自分类Dev

使用|| =在Ruby中的一行上分配多个值

来自分类Dev

Bash在一行中重命名多个文件:可以吗?

来自分类Dev

grep 或 sed 可以只显示与一行中的多个搜索模式匹配的单词吗?

来自分类Dev

我可以在一行中编写多个 RewriteCond 选项吗?

来自分类Dev

我们可以从一行创建多个条目吗?

来自分类Dev

在一行上写多个句子

来自分类Dev

在一行上提示多个输入

来自分类Dev

在一行上显示多个变量?

来自分类Dev

Sweet.js-宏可以在多个文件中使用吗?

来自分类Dev

如何使用宏自动填充包含值的最后一行,在一列中有多个不同的公式?

来自分类Dev

您可以在同一行中的值上运行Oracle的AVG()函数吗?

来自分类Dev

Javascript(ES6)可以分解并在一行上返回吗?

来自分类Dev

为什么我可以在单个jQuery对象的一行上运行多个函数?

来自分类Dev

我可以在表格的最后一行使用行跨度吗?

来自分类Dev

我可以在表格的最后一行使用行跨度吗?

来自分类Dev

使用fs读取文本文件的上一行/下一行吗?

来自分类Dev

使用word宏返回excel的最后一行

来自分类Dev

使用word宏返回Excel的最后一行

来自分类Dev

行继续+行注释,在同一行上吗?

来自分类Dev

同一行上的多个div,而未在每个元素上使用float:left

来自分类Dev

变量赋值后可以在同一行上运行命令吗,它是Shell可移植的吗?

Related 相关文章

  1. 1

    可以在一行上使用多个宏吗?

  2. 2

    我可以在一行上的多个变量上使用+ =吗?

  3. 3

    我可以在同一行上编写多个汇编指令吗?

  4. 4

    我可以在一行上写多个raku型智能匹配吗

  5. 5

    您可以在一行上调用多个方法吗?

  6. 6

    我可以以某种方式在Swift的一行中对多个变量使用可选绑定吗?

  7. 7

    可以使用 CSS Flexbox 在每一行上拉伸元素,同时保持一致的宽度吗?

  8. 8

    Ruby-在一行上使用多个条件

  9. 9

    使用|| =在Ruby中的一行上分配多个值

  10. 10

    Bash在一行中重命名多个文件:可以吗?

  11. 11

    grep 或 sed 可以只显示与一行中的多个搜索模式匹配的单词吗?

  12. 12

    我可以在一行中编写多个 RewriteCond 选项吗?

  13. 13

    我们可以从一行创建多个条目吗?

  14. 14

    在一行上写多个句子

  15. 15

    在一行上提示多个输入

  16. 16

    在一行上显示多个变量?

  17. 17

    Sweet.js-宏可以在多个文件中使用吗?

  18. 18

    如何使用宏自动填充包含值的最后一行,在一列中有多个不同的公式?

  19. 19

    您可以在同一行中的值上运行Oracle的AVG()函数吗?

  20. 20

    Javascript(ES6)可以分解并在一行上返回吗?

  21. 21

    为什么我可以在单个jQuery对象的一行上运行多个函数?

  22. 22

    我可以在表格的最后一行使用行跨度吗?

  23. 23

    我可以在表格的最后一行使用行跨度吗?

  24. 24

    使用fs读取文本文件的上一行/下一行吗?

  25. 25

    使用word宏返回excel的最后一行

  26. 26

    使用word宏返回Excel的最后一行

  27. 27

    行继续+行注释,在同一行上吗?

  28. 28

    同一行上的多个div,而未在每个元素上使用float:left

  29. 29

    变量赋值后可以在同一行上运行命令吗,它是Shell可移植的吗?

热门标签

归档