3

複数の戻り値を持つ関数があるとします (以下を参照)。ただし、ユーザーは関数定義を調べない限り、各値が何を表しているのか分からないため、この出力は有益ではありません。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
4

3 に答える 3

5

Harlan と Stefan が言ったことに加えて、ODBC.jl パッケージ (ソースはこちら) からの例を共有させてください。他の言語よりも Julia の私のお気に入りの機能の 1 つは、カスタム型を作成するのが非常に簡単であることです (そして、パフォーマンスの問題もありません!)。これは、実行されたクエリを説明するデータのいくつかのフィールドを保持するだけのカスタム タイプ Metadata です。これは必ずしも独自の型を必要とするわけではありませんが、関数間でこのすべてのデータを渡すのがより便利になるだけでなく、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

繰り返しますが、派手なことは何もありませんが、カスタム型を定義し、それに沿ってカスタム出力を生成することがいかに簡単かを示しています。

乾杯。

于 2013-06-05T14:35:25.227 に答える