从另一个函数上的匿名函数访问参数

时间:2020-05-09 02:21:21

标签: julia

我必须用签名contains(name)编写一个函数。该函数只会在给定的上下文

上调用
(allNames)->contains("myname")

我已经编码:

function contains(name)
    for n in allNames
        if n === name
            return true
        end
    end
    return false
end

问题是我无法访问函数allNames中的contains。同时,由于不能修改签名,我不能仅仅将其作为参数传递给contains函数。

关于如何处理此问题的任何建议? 预先感谢!

1 个答案:

答案 0 :(得分:0)

好像你想要

  1. Dynamic scope,只有骇客才能实现,并且在语言设计中通常会皱眉头,或者
  2. 一个partially applied function,您可以通过返回闭包来编写:

    containedin(allNames) = name -> in(allNames, name)
    

    ,或者在这种情况下,就像

    in(allNames)
    

    这将返回一个Base.Fix1