swift Swift&Monads
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift Swift&Monads相关的知识,希望对你有一定的参考价值。
// Make Optional a monad
extension Optional {
// Scala style, define `flatMap` directly
func flatMap<U>(f: (a: T) -> Optional<U>) -> Optional<U> {
switch (self) {
case .None: return nil
case .Some(let value): return f(a: value)
}
}
// Haskell style, define `join` and use existing `map` implementation (`fmap` in Haskell terms)
static func join<U>(s: Optional<Optional<U>>) -> Optional<U> {
switch (s) {
case .None: return nil;
case .Some(let value): return value;
}
}
func bind<U>(f: (a: T) -> Optional<U>) -> Optional<U> {
return Optional.join(self.map(f))
}
}
以上是关于swift Swift&Monads的主要内容,如果未能解决你的问题,请参考以下文章
Swift教程_swift常见问题(0005)_完美解决Cannot override 'dealloc'异常
swiftDay01笔记 --swift和OC的不同点 && swift的基础语法
Swift学习—字符串&数组&字典
Swift开发第八篇——方法嵌套&命名空间
Swift & UIWebView 元素隐藏
iOS-OC和Swift相互混合开发(OC&Swift混编)