ColdFusion 中的类型化数组与非类型化数组
Typed array vs untyped array in ColdFusion
我有以下代码:
<cfscript>
data = ['2342bas', 'asqwerewq', '12314', 12421, 1.1];
newdata = arrayNew['Numeric'](1);
for (item in data) {
newdata.append(val(item));
}
writedump(newdata);
newdata = [];
for (item in data) {
newdata.append(val(item));
}
writedump(newdata);
</cfscript>
我得到以下结果:
我想知道为什么它们不同。 'Number' 是否强制所有数据为浮点数?
ColdFusion 通常将数值作为 java.lang.Double
数据类型。作为追加的一部分,它可能会将每个值转换为 java.lang.Double
。
为了得到答案,我不得不深入研究元数据
<cfscript>
data = ['2342bas', 'asqwerewq', '12314', 12421, 1.1];
newdata = arrayNew['Numeric'](1);
for (item in data) {
newdata.append(val(item));
}
newdata.each(function(value) {
writeoutput("<br /><b>#value#</b> #getMetadata(value).getName()#");
});
writeoutput("<hr />");
newdata = [];
for (item in data) {
newdata.append(val(item));
}
newdata.each(function(value) {
writeoutput("<br /><b>#value#</b> #getMetadata(value).getName()#");
});
</cfscript>
结果
有趣的是,BigDecimal 总是有一个小数点,而 Double 可能有也可能没有。基于这个问题,ColdFusion: Get variable type,我从来不知道他们是在 ColdFusion 中使用 BigDecimal 的方法。
我有以下代码:
<cfscript>
data = ['2342bas', 'asqwerewq', '12314', 12421, 1.1];
newdata = arrayNew['Numeric'](1);
for (item in data) {
newdata.append(val(item));
}
writedump(newdata);
newdata = [];
for (item in data) {
newdata.append(val(item));
}
writedump(newdata);
</cfscript>
我得到以下结果:
我想知道为什么它们不同。 'Number' 是否强制所有数据为浮点数?
ColdFusion 通常将数值作为 java.lang.Double
数据类型。作为追加的一部分,它可能会将每个值转换为 java.lang.Double
。
为了得到答案,我不得不深入研究元数据
<cfscript>
data = ['2342bas', 'asqwerewq', '12314', 12421, 1.1];
newdata = arrayNew['Numeric'](1);
for (item in data) {
newdata.append(val(item));
}
newdata.each(function(value) {
writeoutput("<br /><b>#value#</b> #getMetadata(value).getName()#");
});
writeoutput("<hr />");
newdata = [];
for (item in data) {
newdata.append(val(item));
}
newdata.each(function(value) {
writeoutput("<br /><b>#value#</b> #getMetadata(value).getName()#");
});
</cfscript>
结果
有趣的是,BigDecimal 总是有一个小数点,而 Double 可能有也可能没有。基于这个问题,ColdFusion: Get variable type,我从来不知道他们是在 ColdFusion 中使用 BigDecimal 的方法。