gpt4 book ai didi

parameters - 创建一个整数以与 ColdFusion 中的参数类型整数一起使用

转载 作者:行者123 更新时间:2023-12-02 18:47:15 24 4
gpt4 key购买 nike

我喜欢在适当的情况下使用必需的参数和类型。我想编写一个函数,它需要一个整数作为参数,如果传递其他任何东西,就会出错。一般来说,我一直在使用required numeric num,但是numeric将接受 float 和 double 等。我从adobe cfparam docs中了解到(尽管我更喜欢 cfdocs version )整数是有效的参数类型。

我不明白的是如何首先创建一个整数。我收集 CF 在幕后做了一些事情,将数字存储为字符串,但正如您从下面的 cfscript 中看到的,我尝试了一些不同的事情,并从 getMetaData() 获取它们的类型,但没有它们实际上是整数。

更让我困惑的是,其中许多类型从 isValid("integer", num) 返回 true,但仍然无法满足所需的整数 num >.

如果您能为我指出正确的方向,我将不胜感激。

private void function printMeta( required num ){
writeOutput( '</br>' );
writeOutput( ARGUMENTS.num );
writeOutput( '</br>' );
writeOutput( getMetaData( ARGUMENTS.num ).getName() );
writeOutput( '</br>' );
writeOutput( 'isValid integer? ' & isValid( 'integer', ARGUMENTS.num ) );
writeOutput( '</br>' );
}

private numeric function addOne( required numeric num ){
return ARGUMENTS.num + 1;
}


private function needsInt( required integer num ){
return "what a lovely integer you've got there, it's " & ARGUMENTS.num;
}


test1 = 2;
printMeta( test1 );


test2 = addOne( test1 );
printMeta( test2 );

test3 = Int( 7 );
printMeta( test3 );

test4 = numberFormat( 8 );
printMeta( test4 );

try {
test5 = needsInt( Int( 7 ) );
}
catch(any err) {
WriteOutput('<br />');
WriteDump( err.message );
WriteOutput('<br />');
}

try {
test6 = needsInt( test2 );
}
catch(any err) {
WriteOutput('<br />');
WriteDump( err.message );
WriteOutput('<br />');
}

test7 = 3.5;
printMeta( test7 );

test8 = addOne( test7 );
printMeta( test8 );

输出:

2java.lang.String是有效整数吗?是的

3java.lang.Double是有效整数吗?是的

7java.lang.Long是有效整数吗?是的

8java.lang.String是有效整数吗?是的

传递给needsInt函数的NUM参数不是整数类型。

传递给needsInt函数的NUM参数不是整数类型。

3.5java.lang.String是有效整数吗?否

4.5java.lang.Double是有效整数吗?否

传递给needsInt函数的NUM参数不是整数类型。

编辑我尝试专门创建一个java整数,但仍然无法让它工作;

test11 = createObject("java","java.lang.Integer").parseInt("5");
printMeta( test11 );

try {
test12 = needsInt( test11 );
}
catch( any err ) {
WriteOutput('<br />');
WriteDump( err.message );
WriteOutput('<br />');
}

输出:

5java.lang.Integer是有效整数吗?是的

传递给needsInt函数的NUM参数不是整数类型。

最佳答案

我实际上不知道您的确切问题是什么,但我认为您的问题是CFML中没有 native 参数类型integer。它只是数字。这将采用任何可以强制转换为数值的值:仅包含数字、 bool 值、日期等的字符串)。

如果你有这个:

function f(required integer x)

然后CFML 会将其解释为integer.cfc 类型。不是计算机科学意义上的“整数”,也不是 Java int 原语或 java.lang.Integer 等。

如果您需要参数为实际整数,请使用数字,然后在函数体内将其验证为整数,例如:

function f(required numeric x) {
param integer x;
// ...
}

丑陋,但确实有效。

Here's an example on trycf.com

关于parameters - 创建一个整数以与 ColdFusion 中的参数类型整数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45209775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com