我正在使用ColdFusion,但我有兴趣知道其他语言如何处理这个问题。
是否有更好的方法可以返回所有对象变量(getter)而无需在对象上编写大量的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:
对象:StateID = 12,Name =“Argentina”,CountryID = 32,CityID = 44
我的心告诉我这不太可能。
答案 0 :(得分:4)
这取决于您如何在对象中存储变量。我通常将所有变量存储在variables.instance
结构中。然后我创建一个get()
,只返回variables.instance
结构:
public struct function get(){
return Duplicate(variables.instance);
}
答案 1 :(得分:1)
如果您在CF9 +中使用cfproperty
和accessor=true
或persistent=true
,则cfc的转储将返回没有getter=false
的所有属性。