在Ruby中是否有.?
運算符,它在調用對象之前檢查對象是否爲nil
?。? (存在)運營商在紅寶石?
舉例來說,如果我有代碼:
if person and person.neighbor and person.neighbor.house and person.neighbor.house.rooms
person.neighbor.house.rooms.each do |room|
blah
end
end
難道還有比其如果檢查做一個在任何事情上更好的辦法?
請不要說「代碼的方式,這些對象不會永遠是nil
」,我從API調用中獲取這些東西,並且無法控制它。
的[得墨忒耳定律(http://en.wikipedia.org/wiki/Law_of_Demeter)可能是有趣的你,因爲你的代碼侵犯了它嚴重。 – 2012-03-12 00:05:20
可能重複的[有沒有對紅寶石Groovy的鏈式屬性的等效零預防?](http://stackoverflow.com/questions/8805582/is-there-an-equivalent-null-prevention-on-chained-attributes在Groovy-in-ruby) – 2012-03-12 00:06:54
@AndrewMarshal,我絕對同意。然而,我想不出一個好的方法來跟蹤我的情況下的LoD。我基本上是對第三方認證平臺(即facebook twitter等)進行API調用,並獲取一個巨大的嵌套信息對象。在這個範圍內,我只想抓取一塊信息(特別是用戶的教育歷史),這個信息深深嵌套。除非我寫出5種不同的方法,每種方法只能對其後代進行調用,否則我不得不違反LoD。也許有更好的方法? – 2012-03-12 00:12:44