2011-11-02 62 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」,城市=「任何城鎮」) –