Swift如何从同一个类中的另一个方法获取变量

时间:2018-01-05 11:38:56

标签: swift xcode swift4 xcode9


我是斯威夫特的初学者。 我写了代码和一个问题。 我想从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*/)
    }

}

2 个答案:

答案 0 :(得分:0)

  

请注意,问题的实际解决方案在很大程度上取决于您实际想要做的事情(您的最终目标)。

您无法访问a中的bB,因为abB的范围不同。您不能从另一个函数访问函数中声明的局部变量。

要访问它们,您需要将ab移动到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)
}