创建函数字典的更好方法

时间:2018-08-28 18:46:56

标签: function dictionary julia anonymous-function

  /items?$skiptoken=Paged=TRUE&p_ID=5176&$top=5000

我是Julia的新手和新手。有没有办法像我上面的第二次尝试那样做到这一点?谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用如下匿名函数语法:

hole_int = int(input("Score on hole:", hole))

您可以在Julia手册中https://docs.julialang.org/en/latest/manual/functions/#man-anonymous-functions-1中阅读详细的用法。

编辑:请注意,如果最初仅向字典添加一个函数,则其类型将过于严格,例如:new_functions = Dict("g" => x::Int64 -> x + 5) ,例如:

Dict{String,getfield(Main, Symbol("##3#4"))}

因此,您可能应该明确指定类型,例如:

julia> new_functions = Dict("g" => x::Int64 -> x + 5)
Dict{String,getfield(Main, Symbol("##15#16"))} with 1 entry:
  "g" => ##15#16()

或最初在字典中添加至少两个条目:

julia> new_functions = Dict{String, Function}("g" => x::Int64 -> x + 5)
Dict{String,Function} with 1 entry:
  "g" => ##23#24()

答案 1 :(得分:2)

出于完整性考虑:还可以使用普通的多行函数语法作为表达式,这将创建一个具有名称的函数对象(如JavaScript中的“命名函数表达式”;如果需要递归,这很方便) ):

julia> Dict("g" => function g(x::Int); x + 5; end)
Dict{String,typeof(g)} with 1 entry:
  "g" => g

此行中的第一个;是必需的。如您所见,@Bogumił关于键入Dict的警告同样适用。

也可以使用短格式语法,但是必须将表达式放在括号中

Dict("g" => (g(x::Int) = x + 5))