2012-04-18 45 views
0

我正在使用ColdFusion,但我很想知道其他語言如何應對這種情況。toString返回所有對象的getter方法

有沒有更好的方式來返回所有的對象變量(getters)而無需在對象上編寫大量的toString()方法。

variables.oCity = createObject("component", "_lbr._core._locations.city").init(); 

variables.oCity.setName(request.parameters.sCityName); 
variables.oCity.setCountryID(request.parameters.nLocationCountryID); 

if(request.parameters.nStateID eq 0){ 
    variables.stArgs = {}; 
    variables.stArgs.sState = request.parameters.sLocationCountry; 
    variables.stArgs.nCheckCountryID = request.parameters.nCountryID; 
    variables.oCity.setStateID = application.stObj.oLocationBusiness.getState(argumentCollection=variables.stArgs).getStateID(); 
} else { 
    variables.oCity.setStateID = request.parameters.nStateID; 
} 

我的代碼看起來像那樣。我想要的是輸出我剛剛設置的所有東西(以及對象默認設置的任何東西),而不寫入連接所有可能看起來像這樣的各種變量的巨大toString:

Object:StateID = 12,Name =「Argentina」,CountryID = 32,CityID = 44

我的心臟告訴我這不太可能。

+1

TBH不完全確定你在這裏實現的目標,你能說一說嗎? – 2012-04-18 12:05:43

回答

4

這取決於你如何在對象中存儲變量。我通常將所有變量存儲在variables.instance結構中。然後創建一個get()僅僅返回variables.instance結構:

public struct function get(){ 
    return Duplicate(variables.instance); 
} 
+1

只是一個簡短的說明。結構通過引用傳遞,所以如果你不想改變結構來自動更改對象的實例變量(通常不需要),然後將其包裝在重複調用中... return duplicate(variables.instance)。 – 2012-04-18 15:21:24

+0

當然,更新代碼示例。 – 2012-04-18 18:02:38

1

如果您在CF9 +使用cfproperty,並accessor=truepersistent=true,氟氯化碳的轉儲將返回所有的屬性,而無需getter=false