开发者社区> 问答> 正文

为何cocoa里可以直接使用.Normal 类似语法,自己却不能写?

如题,swift中可以如此使用。Normal

var button:UIButton = UIButton(frame:CGRectMake(10,10,10,10))
 button.setTitle("Button", forState:.Normal)

查看.Norma源码,则是 这样一个结构体:

 struct UIControlState : RawOptionSetType {
 init(_ rawValue: UInt)
 init(rawValue: UInt)
static var Normal: UIControlState { get }
static var Highlighted: UIControlState { get } // used when UIControl isHighlighted is set
static var Disabled: UIControlState { get }
static var Selected: UIControlState { get } // flag usable by app (see below)
static var Application: UIControlState { get } // additional flags available for application use
static var Reserved: UIControlState { get } // flags reserved for internal framework use
}

对于 .Normal 可以这样引用,一直很好奇。这是swift既定语法规则嘛?但是自己试图创建这样一个结构体,却无法成功。还是自己写错了?

我是这样创建的

struct Summation {
static var Normal:Summation? { get {
        return nil
    }
}


};

class Student{
 func setSum(forsm sum:Summation){
}


};

var stu = Student()
 stu.setSum(forsm:.Normal!) //此处报错

展开
收起
爵霸 2016-03-12 18:36:30 1967 0
1 条回答
写回答
取消 提交回答
  • 你应该有地反写错了,我按照你的方式试了下是可以的运行的

    定义:

     struct Summation {
        static var ANormal:Summation? {
            get {
                return nil
            }
        }
    }
    
        func setSum(forsm sum:Summation?) {
    
        }

    调用:

     self.setSum(forsm: .ANormal)
    2019-07-17 19:01:24
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载