function - 当参数可能是两种类型之一时如何声明(和传递)Julia函数参数
问题描述
我的目标是将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
或多重调度。
因此,您的代码可以是:
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
推荐阅读
- .net-core - 升级到 macOS Catalina 后出现“zsh: command not found: dotnet-svcutil”
- javascript - Highcharts 似乎有不完整的类型定义
- java - Tomcat 8.5.45 启动后抛出大量 NullPointerException-s 但继续工作
- python - 我正在尝试编写一个 python 程序来查找素数
- sql - 删除所有列(ID 除外)为 NULL 的行
- algorithm - 如何从左侧的所有顶点获取右侧的最小顶点覆盖?
- xamarin.forms - Xamarin Forms WebView 多次触发导航事件
- javascript - 在javascript中获取内部函数名称?
- javascript - 如何从 defaultProps 迁移到默认参数
- python - 如何在 JupyterLab 或 Jupyter Notebook 中找回代码块