使用 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
物件。