如何抑制函数返回

Ale*_*lex 3 julia

假设我有一个具有多个返回值的函数(如下所示)。但是,此输出并不提供信息,因为用户除非查找函数定义,否则不知道每个值代表什么。所以我想用println()适当的名称将结果打印到屏幕上,同时抑制实际返回的值打印在屏幕上。在 R 中,函数invisible()可以做到这一点,但是如何在 Julia 中做同样的事情呢?

function trimci(x::Array; tr=0.2, alpha=0.05, nullvalue=0)
    se=sqrt(winvar(x,tr=tr))./((1-2.*tr)*sqrt(length(x)))
    ci=cell(2)
    df=length(x)-2.*floor(tr.*length(x))-1
    ci=[tmean(x, tr=tr)-qt(1-alpha./2, df).*se, tmean(x, tr=tr)+qt(1-alpha./2, df).*se]
    test=(tmean(x,tr=tr)-nullvalue)./se
    sig=2.*(1-pt(abs(test),df))
    return ci, tmean(x, tr=tr), test, se, sig
end
Run Code Online (Sandbox Code Playgroud)

小智 5

除了 Harlan 和 Stefan 所说的之外,让我分享 ODBC.jl 包中的一个示例(来源在这里)。与其他语言相比,我最喜欢 Julia 的功能之一是创建自定义类型非常简单(而且也没有性能问题!)。这是一个自定义类型“元数据”,它仅保存几个描述已执行查询的数据字段。这不一定需要它自己的类型,但它可以更方便地在函数之间传递所有这些数据,并允许通过重载 Base.show() 函数来自定义其输出格式。

type Metadata
    querystring::String
    cols::Int
    rows::Int
    colnames::Array{ASCIIString}
    coltypes::Array{(String,Int16)}
    colsizes::Array{Int}
    coldigits::Array{Int16}
    colnulls::Array{Int16}
end
function show(io::IO,meta::Metadata)
    if meta == null_meta
        print(io,"No metadata")
    else
        println(io,"Resultset metadata for executed query")
        println(io,"------------------------------------")
        println(io,"Columns: $(meta.cols)")
        println(io,"Rows: $(meta.rows)")
        println(io,"Column Names: $(meta.colnames)")
        println(io,"Column Types: $(meta.coltypes)")
        println(io,"Column Sizes: $(meta.colsizes)")
        println(io,"Column Digits: $(meta.coldigits)")
        println(io,"Column Nullable: $(meta.colnulls)")
        print(io,"Query: $(meta.querystring)")
    end 
end
Run Code Online (Sandbox Code Playgroud)

同样,这没什么花哨的,但说明了定义自定义类型并随之生成自定义输出是多么容易。

干杯。