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"

//    }

//}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容