函数的参数前加上美元符号$是什么意思?

直接上MWE:

function sum1(num)
    total = 0
    for i in num
       total += i
    end
    return total
end

a = collect(1:1000);

@btime sum(a)
 # 86.880 ns (1 allocation: 16 bytes)
@btime sum1(a)
 # 83.851 ns (1 allocation: 16 bytes)
@btime sum($a)
 # 62.220 ns (0 allocations: 0 bytes)
@btime sum1($a)
 # 60.834 ns (0 allocations: 0 bytes)

问题

  1. 函数的参数前加上美元符号$是什么意思?
  2. 为什么自定义sum1()函数比自带sum()函数更快?
1 个赞

$符号的意义在Julia中是interpolation,主要和macro结合使用。请参考这篇英文回答: What is the dollar-sign prefix in function arguments used for in Julia? - Stack Overflow

1 个赞

明白了,谢谢!在macro中是用于标记变量的。