在julia中,如何将表达式的输出分配给新变量?

在julia中,如何将表达式的输出分配给新变量?,julia,Julia,愚蠢的例子,我想做一些 X=println("hi"), 得到 X="hi". 我想这张海报想要访问你可以从println获得的漂亮的摘要格式。将其作为字符串访问的一种方法是使用print写入缓冲区,然后将其作为字符串读回。可能还有一个更简单的方法 using DataFrames data = DataFrame() data[:turtle] = ["Suzy", "Suzy", "Bob", "Batman", "Batman", "Bob", "Adam"] data[:mealT

愚蠢的例子,我想做一些

X=println("hi"),
得到

X="hi".

我想这张海报想要访问你可以从println获得的漂亮的摘要格式。将其作为字符串访问的一种方法是使用print写入缓冲区,然后将其作为字符串读回。可能还有一个更简单的方法

using DataFrames
data = DataFrame()
data[:turtle] = ["Suzy", "Suzy", "Bob", "Batman",  "Batman", "Bob", "Adam"]
data[:mealType] = ["bug", "worm", "worm", "bug",  "worm", "worm", "stick"]

stream = IOBuffer()
println(data)
print(stream, data)
yourString = takebuf_string(stream)
返回

"7x2 DataFrame\n| Row | turtle   | mealType |\n|-----|----------|----------|\n| 1   | \"Suzy\"   | \"bug\"    |\n| 2   | \"Suzy\"   | \"worm\"   |\n| 3   | \"Bob\"    | \"worm\"   |\n| 4   | \"Batman\" | \"bug\"    |\n| 5   | \"Batman\" | \"worm\"   |\n| 6   | \"Bob\"    | \"worm\"   |\n| 7   | \"Adam\"   | \"stick\"  |"

如果您在格式化字符串之后,可以使用
@sprintf

julia> x = @sprintf("%s", "hi")
"hi"

julia> x
"hi"

julia> x = @sprintf("%d/%d", 3, 4)
"3/4"

虽然这是一个宏,但要小心

一般的解决方案是使用上面@ARM所描述的
IOBuffer
takebuf_string
。如果足够捕获
打印的输出
,则

s = string(args...)
给出将由
print(args…
打印的字符串。而且

s = repr(X)

给出将由
showall(X)
打印的字符串。这两种方法都是在内部使用
IOBuffer
takebuf\u string
实现的。

println的目的是将字符串打印到标准输出,而不是作为结果返回字符串。事实上,你的问题并不清楚。请提供更多的上下文。