使用 sprint 创建具有 IO 功能的字符串
可以使用 sprint
函数从使用 IO
对象的函数中创建字符串。例如,code_llvm
函数接受 IO
对象作为第一个参数。通常,它使用像
julia> code_llvm(STDOUT, *, (Int, Int))
define i64 @"jlsys_*_46115"(i64, i64) #0 {
top:
%2 = mul i64 %1, %0
ret i64 %2
}
假设我们希望输出为字符串。那我们就可以做到
julia> sprint(code_llvm, *, (Int, Int))
"\ndefine i64 @\"jlsys_*_46115\"(i64, i64) #0 {\ntop:\n %2 = mul i64 %1, %0\n ret i64 %2\n}\n"
julia> println(ans)
define i64 @"jlsys_*_46115"(i64, i64) #0 {
top:
%2 = mul i64 %1, %0
ret i64 %2
}
将交互函数(如 code_llvm
)的结果转换为字符串可用于自动分析,例如测试生成的代码是否可能已退化。
sprint
函数是一个高阶函数 ,它将在 IO
对象上运行的函数作为其第一个参数。在幕后,它在 RAM 中创建了一个 IOBuffer
,调用给定的函数,并将缓冲区中的数据转换为 String
对象。