Я не программист на Ruby, поэтому я могу упустить что-то неуловимое, но кажется, что andand делает это так, что вы можете безопасно цеплять вызовы методов, даже когда один вызов метода может вернуть nil. Это встроено в Objective-C, потому что вызов методов для (фактически правильно называемых отправкой сообщений) nil является безопасным и совершенно приемлемым. Сообщения, равные nil, всегда возвращают nil и, по сути, не являются опциями. В 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];
С Язык программирования Objective-C : «В Objective-C допустимо отправлять сообщение на ноль - оно просто не действует во время выполнения». Этот документ содержит более подробную информацию о точном поведении вызывающих методов для nil в Objective-C.