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