2011-11-02 31 views
1

我需要将结构(传递给函数的参数)中的所有值转换为大写。格式化结构中的所有值

我写了下面的方法,但不是用格式化的参数替换参数,而是为参数struct创建一个新的键(例如,对于第一个循环,它使用参数的值创建'1'的键[1],下一个循环造成的“2”的参数的值的新键[2]等。

任何人都可以建议我怎么能更改结构数据中每个键的值?

代码类型显示我正在尝试做什么,但让我知道如果您需要更多信息。

public function formatValues(){ 

     numArgs = structCount(arguments); 
     for (i=1; i<=numArgs ; i=i+1){ 
      arguments[i] = Ucase(arguments[i]); 
     } 

     return arguments; 

} 

回答

5

试试这个:

public function formatValues(){ 
    for (var i in arguments){ 
     if(isSimpleValue(arguments[i])){ 
      arguments[i] = ucase(arguments[i]); 
     } 
    } 
    return arguments; 
} 
writeDump(formatValues(name="moo",city="baa")); 
writeDump(formatValues("moo","baa")); 

这将命名参数和未命名参数工作。它也只会修改简单的值(字符串,数字等)而不是复杂的变量(数组,结构体和对象)

+0

斯科特,工作完美。说实话,不完全确定为什么这解决了我遇到的问题,因为分配看起来一样..但是..我是一个快乐的客户..谢谢! – Jason

0

是因为你忘了参数吗?

public function formatValues(arguments){ 

      var numArgs = structCount(arguments); 
      for (var i=1; i<=numArgs ; i=i+1) 
      { 
       arguments[i] = Ucase(arguments[i]); 
      } 

      return arguments; 

    } 
+1

不要忘记numArgs和i的var语句。 –

+1

如果发生下列其中一种情况,将会引发错误: 1.将一个复杂对象传递给formatValues(),例如formatValues(arrayNew())。 2.您可以使用命名参数,例如formatValues =“Skippy”,城市=“任何城镇”) –