gpt4 book ai didi

function - 当参数可能是两种类型之一时如何声明(和传递)Julia 函数参数

转载 作者:行者123 更新时间:2023-12-02 16:11:02 25 4
gpt4 key购买 nike

我的目标是将一个 IOStream 变量传递给 Julia 函数(如果我想写入一个打开的文件),或者 nothing (或者可能是其他东西被视为空值或空值)。原因是我可能会多次调用此函数,并且无论我输入该函数多少次都希望保持文件句柄打开。如果目的不是写入文件,我会简单地传递 nothing 指示函数不要尝试写入文件。

我试过声明为:

function f(x, y, f)

作为:

function f(x, y, f::IOStream)

作为:

function f(x, y, f::Any)

同时将变量集传递给 nothing 或由 IOStream 产生的

open("filename.txt", "a")

声明。在所有情况下,我都会遇到某种错误。有没有其他方法可以实现我的目标,或者我应该使用不同类型的函数声明/调用?

最佳答案

函数和参数的名称不应该相同。无论如何,有两种方法 - 使用 Union 类型或多重分派(dispatch)。

因此您的代码可以是:

function f(x, y, fs::Union{IOStream,Nothing}=nothing)
#code goes here
end

或者你可以这样做:

function f(x, y, fs::IOStream)
#code goes here
end
function f(x, y, fs::Nothing)
#code goes here
end

除了第二个函数,你还可以这样做:

function f(x, y)
#code goes here
end

关于function - 当参数可能是两种类型之一时如何声明(和传递)Julia 函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67995006/

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