如何在Julia的字符串中插入可能为空的变量?

Mat*_*amp 2 julia

我试图通过在字符串中插入变量的值来在Julia中创建动态字符串。直到今天,当值返回时,一切仍然正常,这nothing给我带来了错误。

如何nothing在字符串中包含a ?至少不必if n == nothing; n = "None"为要插入字符串中的每个变量都麻烦。

function charge_summary(charges_df)
    if size(charges_df)[1] > 0
        n_charges = size(charges_df)[1]
        total_charges = round(abs(sum(charges_df[:amount])), digits=2)
        avg_charges = round(abs(mean(charges_df[:amount])), digits=2)
        most_frequent_vender = first(sort(by(charges_df, :transaction_description, nrow), :x1, rev=true))[:transaction_description]
        sms_text = """You have $n_charges new transactions, totaling \$$total_charges.
        Your average expenditure is \$$avg_charges.
        Your most frequented vender is $most_frequent_vender.
        """
        return sms_text
    else
        return nothing
    end
end

sms_msg = charge_summary(charges_df)


Run Code Online (Sandbox Code Playgroud)

返回值:

ArgumentError: `nothing` should not be printed; use `show`, `repr`, or custom output instead.
string at io.jl:156 [inlined]
charge_summary(::DataFrame) at get-summary.jl:18
top-level scope at none:0
include_string(::Module, ::String, ::String, ::Int64) at eval.jl:30
(::getfield(Atom, Symbol("##105#109")){String,Int64,String})() at eval.jl:91
withpath(::getfield(Atom, Symbol("##105#109")){String,Int64,String}, ::String) at utils.jl:30
withpath at eval.jl:46 [inlined]
#104 at eval.jl:90 [inlined]
hideprompt(::getfield(Atom, Symbol("##104#108")){String,Int64,String}) at repl.jl:76
macro expansion at eval.jl:89 [inlined]
(::getfield(Atom, Symbol("##103#107")))(::Dict{String,Any}) at eval.jl:84
handlemsg(::Dict{String,Any}, ::Dict{String,Any}) at comm.jl:168
(::getfield(Atom, Symbol("##14#17")){Array{Any,1}})() at task.jl:259
Run Code Online (Sandbox Code Playgroud)

Bog*_*ski 5

不幸的是,您必须明确处理nothing。例如这样:

Your most frequented vender is $(something(most_frequent_vender, "None")).
Run Code Online (Sandbox Code Playgroud)

这样做的原因是,尚不清楚您希望如何将nothing其转换为字符串,因此必须提供此值(在您的情况下,您需要"None")。

较短的版本是:

Your most frequented vender is $(repr(most_frequent_vender)).
Run Code Online (Sandbox Code Playgroud)

但随后显示nothing"nothing"