我正在閱讀檔案并想在我的函式中嘗試“inout”引數,但它似乎并沒有像我想要的那樣作業。我究竟做錯了什么?
func numbersInPow(numbers: inout [Int], powerBy: Int) -> [Int] {
return numbers.forEach { Int(pow(Double($0), Double(powerBy))) //error
}
print(numbersInPow(numbers: &[1, 2, 3, 4, 5], powerBy: 6)) //doesnt let me to pass int array in here
uj5u.com熱心網友回復:
您可以使用一個額外的 var 來傳遞陣列,而無需numbersInPow在使用 inout 時從方法中回傳陣列。
像這樣修改函式
func numbersInPow(numbers: inout [Int], powerBy: Int){
numbers = numbers.map { Int(pow(Double($0), Double(powerBy))) }
}
并使用
var arr = [1, 2, 3, 4, 5]
numbersInPow(numbers: &arr, powerBy: 6)
print(arr) // Output : [1, 64, 729, 4096, 15625]
uj5u.com熱心網友回復:
錯誤很狡猾Cannot pass immutable value as inout argument: implicit conversion from '' to '' requires a temporary。在您的函式中,numbersInPow Swift 認為這&[1, 2, 3, 4, 5]是常量 - 這意味著let. 所以你必須像這樣修改它
var arr = [1, 2, 3, 4, 5]
print(numbersInPow(numbers: &arr, powerBy: 6))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349201.html
上一篇:如何在swift中使用@resultbuilder使用UICollectionView?
下一篇:如何快速更改子字串的格式
