FLEX程序设计--函数

函数:函数是封装起来的一段特定的代码块,目的是为了更好的重用代码,更容易维护.

1.定义函数

格式:作用域 function 函数名(参数1,参数2,....) :  返回类型

{

      函数体

}

ContractedBlock.gif ExpandedBlockStart.gif Code
            /*************************************
        * 创建获取全名的函数
        * ***********************************
*/
        
private function GetFullName(fName:String, lName:String):String
        {
            
// 组合名字
            var fullName:String = fName + " " + lName;
            
            
// 返回全名
            return fullName;
        }

2.函数调用

格式:函数名(参数1,参数2,参数3,...);

ContractedBlock.gif ExpandedBlockStart.gif Code
//
package  
{
    import flash.display.Sprite;
    
//类名
    public class FunctionExample extends Sprite
    {
        
/*************************************
        * 构造函数
        * ***********************************
*/
        
public function FunctionExample()
        {
            
// 调用函数
            var fullName:String = GetFullName("Tom""Green");
            
            
// 输出
            trace("全名是:" + fullName);
        }
        
        
/*************************************
        * 创建获取全名的函数
        * ***********************************
*/
        
private function GetFullName(fName:String, lName:String):String
        {
            
// 组合名字
            var fullName:String = fName + " " + lName;
            
            
// 返回全名
            return fullName;
        }
    }
    
}

3.函数作用域:函数是有权限,分为公有和私有.公有关键字public,私有关键字private.

ContractedBlock.gif ExpandedBlockStart.gif Code
package  
{

    
public class SongInfo 
    {
        
/************************************
        * 根据歌曲名获取歌手信息
        * 
*/
        
public function GetSinger(songTitle:String):String
        {
            var singer:String 
= "";
            
            
switch(songTitle)
            {
                
case "改变自己":
                    singer 
= "王力宏";
                    
break;
                
case "夜曲":
                    singer 
= "周杰伦";
                    
break;
                
case "知足":
                    singer 
= "五月天";
                    
break;
                
case "就是爱你":
                    singer 
= "陶喆";
                    
break;
            }
            
            
return singer;
        }
        
        
/************************************
        * 根据歌曲名获取歌手信息
        * 
*/
        
public function GetAlbumInfo(songTitle:String):String
        {
            
return GetAlbum(songTitle);
        }
        
        
/************************************
        * 根据歌曲名获取歌手信息
        * 
*/
        
private function GetAlbum(songTitle:String):String
        {
            var album:String 
= "";
            
            
switch(songTitle)
            {
                
case "改变自己":
                    album 
= "改变自己";
                    
break;
                
case "夜曲":
                    album 
= "十一月的萧邦";
                    
break;
                
case "知足":
                    album 
= "知足";
                    
break;    
                
case "就是爱你":
                    album 
= "太平盛世";
                    
break;
            }
            
            
return album;
        }
    }
    
}

访问上面的函数:

ContractedBlock.gif ExpandedBlockStart.gif Code
package  
{
    import flash.display.Sprite;
    
    
public class FunctionScopeExample extends Sprite
    {
        
/*************************************
        * 构造函数
        * ***********************************
*/
        
public function FunctionScopeExample()
        {
            
// 调用函数
            GetSongInfo("夜曲");
        }
        
        
/*************************************
        * 获取歌曲信息
        * ***********************************
*/
        
private function GetSongInfo(song:String):void
        {
            
// 声明变量
            var singer:String = "";
            var album:String 
= "";
            
            
// 实例化
            var songInfo:SongInfo = new SongInfo();
            
// 获取歌手信息
            singer = songInfo.GetSinger(song);
            
// 获取所属专辑
            album = songInfo.GetAlbumInfo(song);
            
            
// 输出结果
            trace("歌曲名:" + song);
            trace(
"歌手:" + singer);
            trace(
"所属专辑:" + album);
        }
    }
    
}

返回结果:

歌曲名:夜曲

歌手:周杰伦

所属专辑:十一月的萧邦

5.函数的参数

5.1.值参数:值参数传入函数体后复制一个副本在函数内使用不会影响外部变量的值.

ContractedBlock.gif ExpandedBlockStart.gif Code
          public function ArgumentsExample()
        {
            
// 值参数
            var fName:String = "Lalo";
            trace(
"传递之前的变量值:" + fName);
            PassPrimitives(fName);
            trace(
"传递之后的变量值:" + fName);
        }
        
        
/************************************
        * 值传递参数
        * 
*/
        
private function PassPrimitives(fName:String):void
        {
            fName 
= "hello!" + fName;
            
            trace(
"函数返回值:" + fName);
        }
        
/*返回值
                    传递之前的变量值:Lalo
                  函数返回值:hello!Lalo
                  传递之后的变量值:Lalo
                
*/

引用参数:引用参数传入函数体后部会产生一个副本,而是传递一个参数的引用,所以函数内部所做的修改会影响到外部引用变量的值.

ContractedBlock.gif ExpandedBlockStart.gif Code
        public function ArgumentsExample()
        {
            
// 引用参数
            var myName:Object = {fName:"Lalo"};
            trace(
"传递之前的变量值:" + myName.fName);
            PassByRef(myName);
            trace(
"传递之后的变量值:" + myName.fName);
        }
        
        
/************************************
        * 引用传递参数
        * 
*/
        
private function PassByRef(myName:Object):void
        {
            myName.fName 
= "Tom";
            trace(
"函数返回值:" + myName.fName);
        }
/*返回结果:
  传递之前的变量值:Lalo
  函数返回值:Tom
  传递之后的变量值:Tom
*/

5.3默认参数:定义了默认参数后,传值时可以将其省略,但是默认参数必须放在非默认参数后面.

ContractedBlock.gif ExpandedBlockStart.gif Code
                public function ArgumentsExample()
        {
            
// 默认参数
            DefaultArguments(25);
        }
                
/************************************
        * 默认参数
        * 
*/
        
private function DefaultArguments(x:int, y:int, z:int = 10):void
        {
            trace(x, y, z);
        }
                
/*返回结果:2 5 10*/

5.4arguments对象参数:arguments对象是一个数组,保存着所有传递过来的参数信息,可以应用arguments对象获得所有的参数信息,arguments.length属性获得参数的个数.

ContractedBlock.gif ExpandedBlockStart.gif Code
                // arguments 参数
                  ArgumentsObject(102030);
               
/************************************
        * arguments 参数
        * 
*/
        
private function ArgumentsObject(x:int, y:int, z:int):void
        {
            trace(
"输出所有参数:");
            
            
for (var i:uint = 0; i < arguments.length; i++)
            {
                trace(arguments[i]);
            }
        }
               
/*返回结果
                   10
                 20
                 30
               
*/

5.5...(rest)参数:接受多个以逗号分割的参数.

ContractedBlock.gif ExpandedBlockStart.gif Code
                /************************************
        * (rest) 参数
        * 
*/
        
private function RestArguments(args):void
        {
            trace(
"输出所有参数:");
            
            
for (var i:uint = 0; i < args.length; i++)
            {
                trace(args[i]);
            }
        }
                    
// (rest) 参数
            RestArguments(102030);
               
/*返回结果:
                 10
                 20
                 30
                
*/

6.递归函数:反复调用自身的函数.

ContractedBlock.gif ExpandedBlockStart.gif Code
            public function SelfFunctionExample()
        {
            trace(
"递归函数的结果:" + SelfFunction(6));
            trace(GetFullName());
        }
        
        
* 递归函数
        
* */
        
public function SelfFunction(x:int):int
        {
            
if(x == 0)
            {
                
return 0;
            }
            
else
            {
                
return 2 * SelfFunction(x-1+ x * x;
            }
        }
                
/*返回结果:
                   递归函数的结果是:318
                 
*/

 

版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

posted @ 2009-04-25 01:38 温景良(Jason) Views( 1032) Comments( 0) Edit 收藏
 

公告

 
本文转 我的程序人生博客园博客,原文链接: http://www.cnblogs.com/wenjl520/archive/2009/04/25/1443257.html,如需转载请自行联系原作者
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值