2013-04-24 15 views
0

我在尋找類似:Objective-C中有「with」語句嗎?

with car.body.wheel 
begin 
.airPressure = 3.0; 
.diameter = 20; 
end 

我可以爲它編寫宏我猜,但不知道是否有任何建立項。

+0

'wheel'的類型是什麼?它是一個對象還是一個結構? – 2013-04-24 01:52:33

+0

一個對象。出於好奇,有沒有辦法爲結構做到這一點? – Meda 2013-04-24 02:00:04

+0

不是一般的,但是如果你碰巧指定了結構的所有*字段,你可以使用一個結構文字和指定的初始化器。的 – 2013-04-24 02:07:09

回答

3

答案沒有,有在目標C.沒有這樣的事情

只是這樣做

XObject *x = car.body.wheel; 
x.airPressure = 3.0; 
x.diameter = 20; 

當然,改變XObject到任何類型wheel

更新:擺脫了id語法

+0

''其實,你的「更好」是必需的。對id進行點語法訪問對於編譯來說太模糊了。 '' – CodaFi 2013-04-24 01:48:05

+0

爲什麼當你可以首先聲明'x'是正確的類型? – 2013-04-24 01:49:17

+0

當然,你們是對的,我只是懶惰,不想彌補虛假的類名。改變了我的答案。 – Skotch 2013-04-24 01:50:55

3

號而不是寫它的宏,這很可能使你的代碼難以對其他的Objective-C程序員閱讀,你應該只是做了正常ObjC方式:

car.body.wheel.airPressure = 3.0; 
car.body.wheel.diameter = 20; 
+0

我真的沒有看到「其他Objective-C程序員難以閱讀」(如果使用宏)。寫得越少越好,另外,不像它是一個神祕的東西,正確的標籤對齊,可以相當好。 – 2013-04-24 01:57:20

+1

少寫並不總是更好。特別是在Objective-C中,某些程度的冗長(在方法名稱等中)是標準的並且是一種優點。如果我要走回頭路,查找宏只是爲了瞭解什麼應該是一些賦值語句,這不是一件好事...... – 2013-04-24 17:57:02

+0

那麼,你並不需要真正原路返回它,將是非常明顯的。但我想這是一個偏好/背景問題。我個人比較喜歡包裝和集中的東西,所以我不需要閱讀10行代碼來理解我可以通過閱讀一個包裝行來得到同樣的東西。 – 2013-04-26 02:45:42