Flash / Flex / ActionScript/Function/function parameters — различия между версиями

Материал из Web эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Версия 09:19, 26 мая 2010

All arguments that have a default value must all be placed last in the order of arguments

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){

    }
    function storeAddress(name:String, email:String, zip:String = null){
    }
}



Complex data types, like Array, pass values by reference.

 
The following data types are passed by value:
String
Number
int
uint
Boolean
Null
void
All other data types are passed by reference.
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var person:Object = {name:" P Gibbons"};
        capitalizeEmployeeName(person);
        trace(person.name); // Displays: PETER GIBBONS

    }
    function capitalizeEmployeeName(employee:Object):void {
        if (employee.name != null) {
            employee.name = employee.name.toUpperCase();
        }
    }
  }
}



Function definition with multiple arguments

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        displayGreeting("Joey", "Good morning.");
    }
    function displayGreeting(sFirstName:String, sGreeting:String):void {
          trace("Hello, " + sFirstName + ". " + sGreeting); //Hello, Joey. Good morning.
    } 
  }
}



Handling an Unknown Number of Parameters

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        trace(getAverage(1,2,3));
        trace(getAverage(1,2,3,4));
        trace(getAverage(1,2,3,4,5));
    }
    public function getAverage (...numbers) {
      var total = 0;
    
      for (var i = 0; i < numbers.length; i++) {
        total += numbers [i];
      }
    
      return total / numbers.length;
    }
  }
}



Mix the named parameter and unnamed parameters

 
public function initializeUser (name, ...hobbies) {
}
initializeUser("H", "v", "s");
name is assigned the value "H", and hobbies is assigned the value ["v", "s"].



Passing Parameters by Value or by Reference

 

package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var myVariable:Number = 5;
        var myVariablePlusOne:Number = incrementByOne(myVariable);
        trace(myVariable);
        trace(myVariablePlusOne);
    }
    function incrementByOne(nValue:Number):Number{
        nValue++;
        return nValue;
     }
  }
}
// 5
// 6



Passing Parameters to a function

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        displayGreeting("Joey");  // Displays: Hello, Joey
        displayGreeting("Robert");  // Displays: Hello, Robert
    }
    function displayGreeting(sFirstName:String):void {
       trace("Hello, " + sFirstName);
    } 
  }
}



Primitive data types are passed by value

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
      var effort:Number = 110;
      var trimmedPercentage:Number = limitPercentage(effort);
    
      trace(effort, "%"); 
      trace(trimmedPercentage, "%");

    }
    function limitPercentage(percentage:Number):Number {
     percentage = Math.min(percentage, 100);
     percentage = Math.max(percentage, 0);
     return percentage;
    }
  }
}



Setting Default Values: add an equal sign (=) and the default value after an argument name

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        showGreeting("Mr. Whimsy");
        showGreeting(); 
    } 
    function showGreeting(name:String = "stranger"):void {
      trace("Hello, "+ name + ", nice to meet you.");
    }
  }
}



The rest parameter can also be used with other required parameters.

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
       // trace(sum()); // throws a runtime error.
        trace(sum(1,2,3,4,5)); // Displays: 15
    }
    function sum(base:Number, ... numbers):Number {
        var result:Number = base;
        for each (var num:Number in numbers) {
           result += num;
    
        }
        return result;
    }
  }
}



Using the Rest Argument (...): represents a variable number of arguments as an array followed by a name for that array

 

package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        trace(sum(1,2,3,4,5)); // Displays: 15
    }
    function sum(... numbers):Number {
        var result:Number = 0;
        for each (var num:Number in numbers) {
           result += num;
        }
        return result;
    }
  }
}