我是斯威夫特的初学者。
我写了代码和一个问题。
我想从func b
获取变量A
,但我不知道如何。
怎么弄它。
/*This is extension from FirstViewController*/
extension FirstViewController{
private func A() {
let a:CGFloat = view.frame.size.width
let b:CGFloat = view.frame.size.height
}
private func B() {
self.Something.frame.size = CGSize(width: /*I want to get a in here*/, height: /*I want to get b in here*/)
}
}
答案 0 :(得分:0)
请注意,问题的实际解决方案在很大程度上取决于您实际想要做的事情(您的最终目标)。
您无法访问a
中的b
或B
,因为a
和b
与B
的范围不同。您不能从另一个函数访问函数中声明的局部变量。
要访问它们,您需要将a
和b
移动到B
可访问的范围。在这种情况下,这可以是扩展的范围:
extension FirstViewController{
var a: CGFloat { return view.frame.size.width }
var b: CGFloat { return view.frame.size.height }
private func A() {
}
private func B() {
self.Something.frame.size = CGSize(width: a, height: b)
}
}
答案 1 :(得分:0)
您只需使用 Tuple
(CGFloat, CGFloat)
来实现这一目标,即
private func A() -> (a: CGFloat, b: CGFloat)
{
let a:CGFloat = view.frame.size.width
let b:CGFloat = view.frame.size.height
return (a, b)
}
private func B()
{
self.Something.frame.size = CGSize(width: self.A().a, height: self.A().b)
}