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

问题描述 投票:0回答:1

我必须编写一个带有签名的函数 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 函数,因为我无法修改签名。

有什么建议可以处理这个问题吗?先谢谢了!

julia
1个回答
0
投票

看来你要么想

  1. 动态范围这只有通过黑客才能实现,而且在语言设计中一般是不受欢迎的,或者说是
  2. a 局部应用功能,你可以通过返回一个闭包来编写。

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

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

    in(allNames)
    

    它将返回一个 Base.Fix1.

© www.soinside.com 2019 - 2024. All rights reserved.