具有结构和布尔值的结构
structs with structs and booleans
我有一个包含结构的变量。这些结构可以有 CFBoolean 变量、更多结构和其他变量。一开始,它嵌套了两层深。我们现在上升到四个级别。我不喜欢我目前的做法。我还可以想象发生五个级别。我无法控制需要这些数据的外部系统。所以我正在寻找一种更通用的方法。
function toJavaBoolean(any data){
//for now, assume it's a struct to DBO conversion
data.each(function(key, value) {
if (getMetadata(data[key]).getName() == 'coldfusion.runtime.CFBoolean') {
data[key] = javacast("boolean", data[key]);
}
if (isStruct(data[key])) {
data2 = data[key];
data2.each(function(key, value) {
if (getMetadata(data2[key]).getName() == 'coldfusion.runtime.CFBoolean') {
data2[key] = javacast("boolean", data2[key]);
}
if (isStruct(data2[key])) {
data3 = data2[key];
data3.each(function(key, value) {
if (getMetadata(data3[key]).getName() == 'coldfusion.runtime.CFBoolean') {
data3[key] = javacast("boolean", data3[key]);
}
if (isStruct(data3[key])) {
data4 = data3[key];
data4.each(function(key, value) {
if (getMetadata(data4[key]).getName() == 'coldfusion.runtime.CFBoolean') {
data4[key] = javacast("boolean", data4[key]);
}
});
}
});
}
});
}
});
你可以像这样使用递归...
function toJavaBoolean(any data){
data.each(function(key, value) {
if (getMetadata(data[key]).getName() == 'coldfusion.runtime.CFBoolean') {
data[key] = javacast("boolean", data[key]);
}
else if (isStruct(data[key]))
data[key] = toJavaBoolean(data[key]);
}
return data;
}
有一些非递归方法对于更大的尺寸或更大的深度可能更快。
我有一个包含结构的变量。这些结构可以有 CFBoolean 变量、更多结构和其他变量。一开始,它嵌套了两层深。我们现在上升到四个级别。我不喜欢我目前的做法。我还可以想象发生五个级别。我无法控制需要这些数据的外部系统。所以我正在寻找一种更通用的方法。
function toJavaBoolean(any data){
//for now, assume it's a struct to DBO conversion
data.each(function(key, value) {
if (getMetadata(data[key]).getName() == 'coldfusion.runtime.CFBoolean') {
data[key] = javacast("boolean", data[key]);
}
if (isStruct(data[key])) {
data2 = data[key];
data2.each(function(key, value) {
if (getMetadata(data2[key]).getName() == 'coldfusion.runtime.CFBoolean') {
data2[key] = javacast("boolean", data2[key]);
}
if (isStruct(data2[key])) {
data3 = data2[key];
data3.each(function(key, value) {
if (getMetadata(data3[key]).getName() == 'coldfusion.runtime.CFBoolean') {
data3[key] = javacast("boolean", data3[key]);
}
if (isStruct(data3[key])) {
data4 = data3[key];
data4.each(function(key, value) {
if (getMetadata(data4[key]).getName() == 'coldfusion.runtime.CFBoolean') {
data4[key] = javacast("boolean", data4[key]);
}
});
}
});
}
});
}
});
你可以像这样使用递归...
function toJavaBoolean(any data){
data.each(function(key, value) {
if (getMetadata(data[key]).getName() == 'coldfusion.runtime.CFBoolean') {
data[key] = javacast("boolean", data[key]);
}
else if (isStruct(data[key]))
data[key] = toJavaBoolean(data[key]);
}
return data;
}
有一些非递归方法对于更大的尺寸或更大的深度可能更快。