Dev*_*shi 4 function-parameter swift
我有一个快速的类,我试图在其中传递函数参数的默认值:
class SuperDuperCoolClass : UIViewController {
// declared a constant
let primaryColor : UIColor = UIColor(red: 72.0/255.0, green: 86.0/255.0, blue: 114.0/255.0, alpha: 1.0)
// compilation error at below line: SuperDuperCoolClass.Type does not have a member named 'primaryColor'
func configureCheckmarkedBullet(bullet: UIButton, color: UIColor = primaryColor){
// some cool stuff with bullet and primaryColor
}
}
Run Code Online (Sandbox Code Playgroud)
如上所述,如果我尝试使用常数作为函数参数的默认值,则编译器会抱怨以下错误:
SuperDuperCoolClass.Type does not have a member named 'primaryColor'
Run Code Online (Sandbox Code Playgroud)
但是如果我这样直接分配RHS值,它不会抱怨:-/:
func configureCheckmarkedBullet(bullet: UIButton, color: UIColor = UIColor(red: 72.0/255.0, green: 86.0/255.0, blue: 114.0/255.0, alpha: 1.0)) {
// now I can do some cool stuff
}
Run Code Online (Sandbox Code Playgroud)
关于如何使上述编译错误静音的任何想法?
您必须将默认值定义为静态属性:
class SuperDuperCoolClass : UIViewController {
static let primaryColor : UIColor = UIColor(red: 72.0/255.0, green: 86.0/255.0, blue: 114.0/255.0, alpha: 1.0)
func configureCheckmarkedBullet(bullet: UIButton, color: UIColor = primaryColor){
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码使用Swift 1.2(Xcode 6.3)进行编译,该版本增加了对静态计算属性的支持。在早期版本中,您可以将struct包含该属性的嵌套定义为解决方法(比较
尚不支持的Class变量):
class SuperDuperCoolClass : UIViewController {
struct Constants {
static let primaryColor : UIColor = UIColor(red: 72.0/255.0, green: 86.0/255.0, blue: 114.0/255.0, alpha: 1.0)
}
func configureCheckmarkedBullet(bullet: UIButton, color: UIColor = Constants.primaryColor){
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
735 次 |
| 最近记录: |