我具有以下Kotlin功能:
lazy var name: UILabel = {
let lb = UILabel()
lb.text? = getthename()
lb.lineBreakMode = NSLineBreakMode.byWordWrapping
lb.textColor = .mainGreen
lb.textAlignment = .left
lb.font = UIFont.boldSystemFont(ofSize:12.0)
return lb
}()
func getthename() -> String {
var wins : String = ""
let ud = (Auth.auth().currentUser?.uid)
self.ref = Database.database().reference()
self.ref.child("Users").child(ud!).observeSingleEvent(of: .value, with: {(snapshot) in
if let getData = snapshot.value as? [String:Any] {
wins = (getData["lastName "] as? String)!
}
})
return wins
}
此列表中有多少参数无关紧要,我总是会得到一个fun invokeSync(typedArguments : List<Any?>): Any?{
var returnedValue : Any?
try {
returnedValue = callable.call(this, typedArguments);
} catch (e:Exception) {
logInvocationError(e, typedArguments);
throw IllegalArgumentException(e);
}
}
的说法:“ Callable期望3个参数,但提供了1个”。
该函数是一个简单的isGreater函数,带有2个IllegalArgumentException
类型的参数。
我已经检查了参数列表,其中有2个类型为Int
的参数。
此处是上下文中的函数:
Int
有人可以帮助我并告诉我有什么问题吗?可以给我提示吗?
答案 0 :(得分:2)
由于call
使用vararg
,因此您需要使用扩展运算符*
和toTypedArray()
来传递List
,如下所示:
returnedValue = callable.call(this, *typedArguments.toTypedArray());
第一个参数是您要在其上调用函数的实例,其他两个参数来自扩展的List,条件是List恰好具有两个元素。