我需要在 Swift 中像 C 中那樣有一個指標陣列。
以下代碼有效:
let ptr = UnsafeMutableBufferPointer<Int32>.allocate(capacity: 5)
ptr[0] = 1
ptr[1] = 5
print(ptr[0], ptr[1]) // outputs 1 5
但是,以下代碼不起作用:
let ptr = UnsafeMutableBufferPointer<String>.allocate(capacity: 5)
print(ptr[0]) // Outputs an empty string (as expected)
print(ptr[1]) // Just exits with exit code 11
當我print(ptr[1])在 swift REPL 中執行時,我得到以下輸出:
Execution interrupted. Enter code to recover and continue.
Enter LLDB commands to investigate (type :help for assistance.)
如何使用字串(或任何其他參考型別,因為這似乎也不適用于類)創建一個類似 C 的陣列。
我應該調整什么?
uj5u.com熱心網友回復:
您需要使用有效String資料初始化記憶體。
let values = ["First", "Last"]
let umbp = UnsafeMutableBufferPointer<String>.allocate(capacity: values.count)
_ = umbp.initialize(from: values)
print(umbp.map { $0 })
umbp[0] = "Joe"
umbp[1] = "Smith"
print(umbp.map { $0 })
印刷:
["First", "Last"]
["Joe", "Smith"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/493275.html
下一篇:為什么陣列變數需要星號?
