//事例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"
// }
//}
网友评论