++Hadi++
Active Member
سلام
ما در C++ می تونستیم یه متغیر رو به دو صورت به یه تابع بفرستیم :
1- با مقدار
2- با مرجع یا رفرنس
در حالت اول وقتی متغیر داخل تابع می رفت و اونو به روش زیر تغییر می دادیم ، هیچ تغییری در اصل متغیر ایجاد نمی شد :
ولی وقتی همونو با این روش می فرستادیم ، در واقع اونو با مرجع و اصلش وارد تابع می شد و می تونستیم اونو کلا عوض کنیم :
در واقع در روش دوم ، آدرس اشاره گر یا در واقع خونه حافظه این متغیر در ورودی تابع کچی می شد و می تونستیم ، اونو از بیس عوض کنیم .
البته یه استثنائی در مورد آرایه ها بود و این بود که اگه آرایه رو به روش اول ارسال می کردین ، می تونستین به صورت مستقیم مقادیر خونه های اونو عوض کنین و در واقع واسه تغییر مقدار خونه های آرایه نیازی به ارسال مرجع آرایه نیست .چرا؟
چون آرایه خودش یه اشاره گره .
حالا همین روش در اکشن به سبک های متنوع امکانپذیره .
من امروز دنبال این روش در اکشن 3 بودم و اونو پیدا کردم و گفتم براتون بنویسم .
اول این دستور رو در فلش و اکشن 3 اجرا کنید :
خوب دیدین که متغیر عوض نشد چون اونو با مقدار فرستادیم .برای اینکه بتونیم یه متغیر رو با مرجع به تابع اکشن 3 بفرستیم تا اونو عوض کنین باید از آرایه یا از Object استفاده کنیم .
به اینجا توجه کنید :
می بینین که ر اینجا ، آرایه رو تونستیم مستقیما عوض کنیم .
و حالا کار نهایی که خواستم بهتون آموزش بدم :
یعنی کافیه متغیراتونو رو یه Object تعریف و داخل تابع ببرین تا بتونین اونو به صورت مرجع عوض کنین ...
موفق باشید ...
ما در C++ می تونستیم یه متغیر رو به دو صورت به یه تابع بفرستیم :
1- با مقدار
2- با مرجع یا رفرنس
در حالت اول وقتی متغیر داخل تابع می رفت و اونو به روش زیر تغییر می دادیم ، هیچ تغییری در اصل متغیر ایجاد نمی شد :
PHP:
int a=1;
ChangeFun(a);
cout<<a<<endl;//OutPut:1
void ChangeFun(int NewNumber)
{
NewNumber=10;
}
PHP:
int a=1;
ChangeFun(a);
cout<<a<<endl;//OutPut:10
void ChangeFun( int$ NewNumber)
{
NewNumber=10;
}
البته یه استثنائی در مورد آرایه ها بود و این بود که اگه آرایه رو به روش اول ارسال می کردین ، می تونستین به صورت مستقیم مقادیر خونه های اونو عوض کنین و در واقع واسه تغییر مقدار خونه های آرایه نیازی به ارسال مرجع آرایه نیست .چرا؟
چون آرایه خودش یه اشاره گره .
حالا همین روش در اکشن به سبک های متنوع امکانپذیره .
من امروز دنبال این روش در اکشن 3 بودم و اونو پیدا کردم و گفتم براتون بنویسم .
اول این دستور رو در فلش و اکشن 3 اجرا کنید :
PHP:
var i:int=1;
ChangeFun(i);
trace(i);//output:1
function ChangeFun(num:int):void
{
num=10;
}
به اینجا توجه کنید :
PHP:
var i:Array=[1,2,3,4,5];
ChangeFun(i);
trace(i);//output:100,2,3,4,5
function ChangeFun(num:Array):void
{
num[0]=100;
}
و حالا کار نهایی که خواستم بهتون آموزش بدم :
PHP:
var objVar:Object = {x:10, y:15};
objVar.z=20;
trace("First Time : ",objVar.x, objVar.y,objVar.z); // 10 15
passByRef(objVar); // 11 16
trace("Final Trace: ",objVar.x, objVar.y,objVar.z); // 11 16
function passByRef(objParam:Object):void
{
objParam.x++;
objParam.y++;
objParam.z++;
trace("In Function: ",objParam.x, objParam.y,objParam.z);
}
موفق باشید ...