我试图在swift的扩展中使用闭包,但我遇到了一点小麻烦。我尝试过几种方法,比如尝试在swift中将存储属性与普通闭包结合起来,但似乎我尝试过的每一种方法都会出错。下面是我迄今为止最好的代码。我在这段代码中得到的一个错误是“使用未解析的标识符'self'”,但是当我在square()函数中重新引用self(the Int)时,我没有得到这个错误。另一个错误是“扩展不能包含存储的属性”,但我认为它们可以?非常感谢你的任何帮助都很棒!我希望这对未来的观众有所帮助。
extension Int {
var timesX: Int = { (multiplier: Int) -> Int in
return self * multiplier
}
func square() -> Int {
return self * self
}
}发布于 2018-09-10 16:13:26
extension Int {
func timeX(times : Int) -> Int {
return times * self
}
func square() -> Int {
return self * self
}
}这应该是你的问题的解决方案。
发布于 2018-09-10 16:06:10
您很好地定义了闭包表达式。由于闭包是引用类型,您可以将它们赋给一个常量或变量(在本例中是一个变量timeX)。但是它的类型在这里是错误的。
请参见以下代码:
extension Int {
var timesX = { (multiplier: Int) -> Int in
return self * multiplier
}
func square() -> Int {
return self * self
}
}变量timesX
示例:
let number: Int = 10
number.timeX(3) // result 30
number.timeX(5) // result 50https://stackoverflow.com/questions/36562215
复制相似问题