如何创建一个包含 n 个变量的函数 (Julia)

Tio*_*ias 3 julia

对于固定n,我想创建一个带有n变量的函数

f(x_1, ..., x_n)
Run Code Online (Sandbox Code Playgroud)

例如,如果n=3,我想创建一个算法,使得

f(x_1, x_2, x_3) = x_1 + x_2 + x_3
Run Code Online (Sandbox Code Playgroud)

为每个都有一个算法会非常好n

f(x_1, ..., x_n) = x_1 + ... + x_n
Run Code Online (Sandbox Code Playgroud)

我不知道如何声明函数以及如何创建n变量。

感谢您的帮助,

Prz*_*fel 5

在朱莉娅你可以做

function f(x...)
     sum(x)
end
Run Code Online (Sandbox Code Playgroud)

现在:

julia> f(1,2,3)
6
Run Code Online (Sandbox Code Playgroud)

请注意,在函数中f, ,x仅被视为 a ,Tuple因此您可以做任何想做的事情(包括要求元素类型等)。

更一般地,您可以定义function f(x...;y...). 让我们试一试

function f(x...;y...)
    @show x
    @show Dict(y)
end
Run Code Online (Sandbox Code Playgroud)

现在运行它:

julia> f(1,2,"hello";a=22, b=777)
x = (1, 2, "hello")
Dict(y) = Dict(:a => 22, :b => 777)
Dict{Symbol, Int64} with 2 entries:
  :a => 22
  :b => 777
Run Code Online (Sandbox Code Playgroud)

最后,另一种(可能不太优雅)方式可能是:

g(v::NTuple{3,Int}) = sum(v)
Run Code Online (Sandbox Code Playgroud)

这迫使v成为一个3元素Tuple并被g称为g((1,2,3))