swift some关键字

//事例1:

//some的用法

//彩蛋协议

protocol SurpriseEgg{

    associatedtype ContentType

    var content:ContentType{get}

}

//定义一个彩蛋类,

struct egg:SurpriseEgg{

    var content:String

}

//抽奖

//返回遵守SurpriseEgg的类,但是只能返回一种类型,下面注释的返回是不对的.编译时确定类型

/*

 if(条件){

    return 类型1;

 }else{

    return 类型2;

 }

 */

//其实这里直接返回egg类型就行了,此处只是为了说明some

func pickEgg() -> some SurpriseEgg{

    var arr = [egg]();

    let n = 6;

    for i in 1...n{

        let e = egg(content:"\(i)号蛋");

        arr.append(e);

    }

    return arr[Int(arc4random())%n]

}

//let oneEgg =  pickEgg();

//print(oneEgg.content);

//事例2

//转自:http://www.cocoachina.com/cms/wap.php?action=article&id=27048

func makeInt() ->some Equatable{

    return arc4random()%5;

}

print(makeInt());

//这是不行的 返回类型不统一

//func makeInt() -> some Equatable{

//    if(Bool.random()){

//        return 5

//    }else{

//        return "string"

//    }

//}

你可能感兴趣的:(swift some关键字)