为什么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!) //此处报错

球大神解答!

http://blog.csdn.net/wxtsmart/article/category/717714

我怎么觉的应该是枚举,而不是结构体呢?枚举是可以删除前面的东西,直接。xxx这个用的

你应该有地反写错了,我按照你的方式试了下是可以的运行的

定义:

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

    func setSum(forsm sum:Summation?) {

    }

调用:

 self.setSum(forsm: .ANormal)