将字符串数组传递给函数
Passing String array to a function
我正在尝试将数组传递给函数:
var array:[String] = []
// fill the array
array.append(uniqueId as String)
// pass the array to a function:
GamePrefrences.setLevelsArray(array)
我的函数是这样声明的:
func setLevelsArray(arr:[String])
{
GamePrefrences.levels_array = arr
}
但是在线上我尝试调用它给出的函数但出现错误:
cannot invoke ... with argument list of type [(String)]
有什么问题?如果可以提供简要说明
首先,您的函数不是 class 级别的函数,您是直接使用 class 名称调用该方法。
这样试试。
var array:[String] = []
// fill the array
array.append(uniqueId as! String)
// pass the array to a function:
GamePrefrences.setLevelsArray(array)
函数声明。
class func setLevelsArray(arr:[String])
{
GamePrefrences.levels_array = arr
}
或者,
var array:[String] = []
// fill the array
array.append(uniqueId as String)
// pass the array to a function:
let instance = GamePrefrences()//Depends on you, how you defined the initialiser.
instance.setLevelsArray(array)
你的函数体。
func setLevelsArray(arr:[String])
{
instance.levels_array = arr
}
请尝试这样的操作
func setLevelsArray(arr:[String])
{
let tempArr = arr
GamePrefrences.levels_array = tempArr
}
in Swift
Arrays
和 Dictionary
是按值而不是按引用传递的,因此如果您不更改值或分配给任何其他变量,则 Swift compiler
没有得到副本,而是变量仍然存在于 heap
中。所以在分配之前,我认为有必要将其复制到另一个变量中。
您对空数组的声明无效。下面是声明空数组的方法:
var array = [String]()
我正在尝试将数组传递给函数:
var array:[String] = []
// fill the array
array.append(uniqueId as String)
// pass the array to a function:
GamePrefrences.setLevelsArray(array)
我的函数是这样声明的:
func setLevelsArray(arr:[String])
{
GamePrefrences.levels_array = arr
}
但是在线上我尝试调用它给出的函数但出现错误:
cannot invoke ... with argument list of type [(String)]
有什么问题?如果可以提供简要说明
首先,您的函数不是 class 级别的函数,您是直接使用 class 名称调用该方法。
这样试试。
var array:[String] = []
// fill the array
array.append(uniqueId as! String)
// pass the array to a function:
GamePrefrences.setLevelsArray(array)
函数声明。
class func setLevelsArray(arr:[String])
{
GamePrefrences.levels_array = arr
}
或者,
var array:[String] = []
// fill the array
array.append(uniqueId as String)
// pass the array to a function:
let instance = GamePrefrences()//Depends on you, how you defined the initialiser.
instance.setLevelsArray(array)
你的函数体。
func setLevelsArray(arr:[String])
{
instance.levels_array = arr
}
请尝试这样的操作
func setLevelsArray(arr:[String])
{
let tempArr = arr
GamePrefrences.levels_array = tempArr
}
in Swift
Arrays
和 Dictionary
是按值而不是按引用传递的,因此如果您不更改值或分配给任何其他变量,则 Swift compiler
没有得到副本,而是变量仍然存在于 heap
中。所以在分配之前,我认为有必要将其复制到另一个变量中。
您对空数组的声明无效。下面是声明空数组的方法:
var array = [String]()