gpt4 book ai didi

function - Julia:函数对象

转载 作者:行者123 更新时间:2023-12-02 19:15:13 24 4
gpt4 key购买 nike

我想在 Julia 中使用一个对象,它可以由函数初始化。它就像 C 中的函数指针。

这是我的目标:

我有一个 julia 脚本和一个 julia 模块。

在此脚本中,我有一个数组。
该模块需要能够向该数组添加一些元素。

#script
liste = Int64[]
function addElement(e)
liste.push(e)
end
include("path/mymodule.jl")
myModule.setAddElementFunc(addElement)
myModule.execute() # error: wrong number of parameter



#mymodule.jl

module myModule
export setAddElementFunc
export execute

addElementFunc = ()->()

funciton setAddElementFunc(fn)
addElementFunc = fn
end

function execute()
addElementFunc(3)
end

end

基本上,我的想法是:
在模块中,除了添加之外我们不能做任何事情。我需要做这样的结构,因为我的工作是编写 julia 脚本,而其他人将编写该模块。所以我想限制他的权利来保证列表的安全,在这种情况下,他可以只添加元素。

最佳答案

要在 Julia 中生成新类型,我们可以执行类似的操作

type MyArray{T}
elements::Vector{T}
my_value::Int
end

这会自动为您创建几个默认构造函数。您可以通过为其每个字段提供初始值来创建您类型的对象。

v = MyArray([3, 5], 17)

在 Julia 中,函数并不存在于对象内部,而是在对象外部定义的方法。从这个意义上说,Julia 中的对象与 C 中的结构类似,只是它们可以(并且通常应该)按类型进行参数化,如本例所示({T})。

例如,在这种情况下,您可以简单地从 Julia 基类中定义自己的泛型函数 push! 方法,以作用于新类型的对象:

push!(x::MyArray, value) = push!(x.elements, value)

现在你可以做

push!(v, 4)

将值 4 添加到您的对象。

您应该阅读 Julia 手册并查看一些教程,以获取有关定义类型的更多信息。如果有任何不清楚的地方,请告诉我们。

关于function - Julia:函数对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33697918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com