Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 将“limits”作为函数参数传递_Julia - Fatal编程技术网

Julia 将“limits”作为函数参数传递

Julia 将“limits”作为函数参数传递,julia,Julia,我正在尝试构建一个函数,该函数接受两个输入限制和函数,因此我写了以下内容: function Σ(limits, f::Function) @show limits @show f end Σ((i=1:3), :(x->x^2)) 但它无法运行,错误如下: 错误:LoadError:函数∑不接受关键字参数 我不明白我应该在函数声明中还是在函数执行中更改某些内容?看起来错误是在传递函数时出现的,下面是为解决此问题而使用的正确代码: function Σ(limits,

我正在尝试构建一个函数,该函数接受两个输入
限制
函数
,因此我写了以下内容:

function Σ(limits, f::Function)
    @show limits
    @show f
end

Σ((i=1:3), :(x->x^2))
但它无法运行,错误如下:

错误:LoadError:函数∑不接受关键字参数


我不明白我应该在函数声明中还是在函数执行中更改某些内容?

看起来错误是在传递
函数时出现的,下面是为解决此问题而使用的正确代码:

function Σ(limits, f::Function)
    prefix, start, stop = limits.args[2].args
    out = 0.0
    for i=start:stop
        out += f(i)
    end
    out
end

result = Σ(:(i=1:6), n->(6n + 2))
@show result

其他4种解决方法包括:

# Using Pair
julia> function Σ(limits, f::Function)
           out = 0.0
           start = limits.first
           stop = limits.second
           for i = start:stop
               out += f(i)
           end
           out
       end
Σ (generic function with 1 method)

julia> Σ(1=>6, n->(6n + 2))
138.0
以及

最后一个选项可以重新编写为:

function Σ(range, f::Function)
    out = 0.0
    (for i = range; out += f(i) ; end)
    out
end

result = Σ(1:6, n->(6n + 2))
@show result
通过使用已有的
sum
函数,下面是一个单行函数:

Σ(range, f::Function) = sum(f(i) for i in range)

result = Σ(1:6, n->(6n + 2))
@show result
或者,简单地说:

f(n) = 6n + 2
result = sum(f(n) for n=1:6)
@show result
也可以简化为:

f(n) = 6n + 2
result = sum(f, 1:6)
@show result
f(n) = 6n + 2
result = sum(f, 1:6)
@show result