次のように、ポインターを取り、それを埋める関数の出力バッファーとして迅速な配列を使用しています。
var buffer : [Int32] = ...
tehFillFunc(UnsafeMutablePointer<Int32>(buffer))
これは問題なく動作します。問題は、コンパイラがそれを不平をVariable 'buffer' was never mutated; consider changing to 'let' constant
言っていることです。これは、fill 関数で変更されたと確信しているため、やりたくありません。
それで、それを黙らせる方法はありますか?(ダミーセットを行うこともできますが、適切に行うことをお勧めします)。
編集:問題を示す完全なサンプルコードの要求どおり(cは必要ありません):
class ViewController: UIViewController {
func fill(sth: UnsafeMutablePointer<Int32>) {
sth[0] = 7
}
override func viewDidLoad() {
super.viewDidLoad()
var array = [Int32].init(count: 10, repeatedValue: 0)
fill(UnsafeMutablePointer<Int32>(array))
print("\(array)")
}
}
ただし、解決策はすでに投稿されています。最も単純な形式:
fill(&array)