gpt4 book ai didi

swift - 是否可以在 Swift 中将空函数声明为变量?

转载 作者:行者123 更新时间:2023-11-30 10:00:49 25 4
gpt4 key购买 nike

是否可以做这样的事情,并创建一个稍后可分配的空函数,因为我不断收到错误,无法调用分配的函数,这是我得到的最接近的函数

fileprivate class actionButton: UIButton{
var functo = ()
func tapped(functoCall: () ->Void){
self.functo()
}
}

此按钮在函数中初始化,该函数将函数作为参数并将其传递给此按钮,该按钮是上面指定的类的后代

    button.functo = funcToCall()
button.addTarget(self, action: #selector(yes.tapped(functoCall:)), for: .touchDown)

我遇到的问题是,当我尝试调用 self.functo() 时,我无法调用非函数类型

最佳答案

是的,这是可能的。

您收到错误的原因是编译器无法知道 functo 实际上是一个可调用的函数。您隐式地将其设为 Any

您只需首先将其(例如使用 if let)转换为所需类型的函数即可。

类似这样的事情应该可以帮助您开始:

var myfunc: Any = ()

func test() -> String {
return "Cool"
}
// Assign any function to myfunc
myfunc = test

// Just cast it to the expected type
if let x = myfunc as? ()->String {
x()
}

如果问题只是针对这个问题(正如反对者所认为的那样),您只需输入带有函数签名的变量即可。这是一个简单的案例:

var myfunc: ((Any) -> Void)? = nil

然后当你分配它时它是可调用的。

关于swift - 是否可以在 Swift 中将空函数声明为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44313123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com