是否有Objective-C的'andand'monad版本?

时间:2012-01-02 01:23:49

标签: objective-c monads

我最近开始使用Ick的'andand'用于Ruby,因此我可以比以前更轻松地遍历嵌套集合。

在任何地方都有针对Objective-C的这个习惯用法的版本吗?

andand at rubygems

1 个答案:

答案 0 :(得分:7)

我不是Ruby程序员,所以我可能会遗漏一些微妙的东西,但它似乎并且使得它可以安全地链接方法调用,即使一个方法调用可能返回nil。这是在Objective-C中内置的,因为调用方法(实际上恰当地称为发送消息)nil是安全且完全可接受的。发送给nil的消息总是返回nil,基本上是no-op。在Objective-C中,这很好:

id foo = [someObject objectByDoingSomething]; // foo might be nil

id bar = [foo objectByDoingSomethingElse];

// If foo is nil, calling objectByDoingSomethingElse is essentially
// a no-op and returns nil, so bar will be nil
NSLog(@"foo: %@ bar: %@", foo, bar);

因此,这也很好,即使objectByDoingSomething可能返回nil:

id foo = [[someObject objectByDoingSomething] objectByDoingSomethingElse];

来自The Objective-C Programming Language:“在Objective-C中,向nil发送消息是有效的 - 它在运行时根本没有效果。”该文档包含有关在Objective-C中调用nil的方法的完全行为的更多细节。