不能声明使用之前的let吗?

时间:2018-04-09 00:28:25

标签: swift

因此,在目标C,C / C ++和.NET以及我使用的几乎所有其他语言中,您可以声明可以包含先前常量的常量,例如

#define PI 3.14159
#define HALFPI (PI/2)

const CGFloat BOTTOM_BAR_HEIGHT = 200;
const CGFloat BOTTOMBARCONTENTS_DY = BOTTOM_BAR_HEIGHT/2;

但这似乎并不适用于swift

let PI=3.14159
let HALF_PI=PI/2

如果您尝试执行(许多示例中的一个)布局维度或实际上任何相互依赖的常量集合,那么这是真正有用的模式。有没有办法在swift中实现这个模式,而不是将它们声明为vars并将它们设置在初始化函数中(这将使一些真正冗长的代码的大小加倍并降低其可维护性,因此使用vars而不是let使用任何低级惩罚,破坏了我对swift的第一印象)?感谢。

1 个答案:

答案 0 :(得分:0)

可能你可以使用像这样的NSObject类:

import UIKit
class ViewController: NSObject {  
    static let PI = 3.14
    static let HALF_PI = ViewController.PI/2 
}

要实现此目的,您可以使用静态

并将其用于任何View控制器,如

 print(ViewController.PI)
 print(ViewController.HALF_PI)

希望这有助于。