小编Fel*_*nez的帖子

如何通过元组将关键字和关键字变量值传递给函数

您可以通过带有省略号的元组轻松地将"正常"(即非关键字)变量值传递给函数,例如:

julia> f(x, y, z) = x + y + z;

julia> f(0, 1, 2)
3

julia> varvalues = 0, 1, 2
(0,1,2)

julia> f(varvalues...)
3
Run Code Online (Sandbox Code Playgroud)

但对于关键字变量,如何通过变量传递关键字和相应的变量值?比如说(原谅这个愚蠢的例子):

julia> function g(x, y, z; operation = "add", format = "number")
           operation == "add"   && format == "number" && return        x + y + z
           operation == "add"   && format == "string" && return string(x + y + z)
           operation == "times" && format == "number" && return        x * y * z …
Run Code Online (Sandbox Code Playgroud)

julia

5
推荐指数
1
解决办法
115
查看次数

如何根据变量值在函数内定义函数

我正在编写一个函数,如果它可以根据变量的输入或运行时值(然后使用该函数)定义另一个函数,我会发现它更容易编写和读取.下面说明了这个想法(即使在这个简单的例子中定义函数内部的函数没有任何优势):

julia> function f(option::Bool)
           if option
               g() = println("option true")
               g()
           else
               g() = println("option false")
               g()
           end
       end;
WARNING: Method definition g() in module Main at REPL[1]:3 overwritten at REPL[1]:6.

julia> f(true)
option false

julia> f(false)
ERROR: UndefVarError: g not defined
 in f(::Bool) at .\REPL[1]:7
Run Code Online (Sandbox Code Playgroud)

使用完整function... end语法g也无济于事.

问题是:我是否做错了以获得警告和意外行为,或者朱莉娅不允许这样做?如果可以做到,怎么做?

NB对于我目前的需要,我可以定义两个不同的函数,g1和g2,它似乎工作; 但如果g只有一个任务概念的案例很多呢?我认为作为第一类对象的函数可以自由操作:分配给变量,根据条件以某种方式定义,覆盖等等.

PS我知道我可以编写一个字符串然后解析它,但这是一个丑陋的解决方案.

julia

5
推荐指数
1
解决办法
278
查看次数

标签 统计

julia ×2