تور لحظه آخری
امروز : یکشنبه ، 15 مهر 1403    احادیث و روایات:  پیامبر اکرم (ص):به وسيله من هشدار داده شديد و به وسيله على عليه ‏السلام هدايت مى‏يابيد و به وسي...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها




آمار وبسایت

 تعداد کل بازدیدها : 1821198202




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

eval() چه جوري كار ميكنه -


واضح آرشیو وب فارسی:سایت ریسک: t=18785">eval() چه جوري كار ميكنه naeim_crack 26 شهريور 1383, 10:25سلام اقا اين دستور eval(); كارش چيه و چه جوري كار مي كنه يك سوال ديگه هم داشتم من يك متغيير به شكل زير دارم pat="book" و هميشه اين متغيير pat عوض ميشه حالا من مي خوام مقدار متغيير رو توي يك مسير قرار بدم به شكل زير _root.*(var pat).text="naeim" مي خوام به جاي*(var pat) مقدار pat كه همون book هستش قرار بگيره مثل زير بشه يعني _root.book.text="naeim" مرسي fafa^mx 26 شهريور 1383, 10:50eval() برای تبدیل یک String به Object استفاده میشه! مصلا ما Object به نام "ali" نداریم!اما میتونیم آبجکتی به نام ali داشته باشیم!بنا بر این eval("ali") ==> ali naeim_crack 26 شهريور 1383, 13:48سلام در رابطه با eval بيشتر توضيح بدخ ببنيم كه به چه درد مي خوره قسمت دوم سوال كه خيلي مهمه هنوز مونده منتظرم idw 26 شهريور 1383, 14:20همونطوري كه بهت گفتم به نظرم براي سوال دومت بايد از object.porotoType يا يك همچين چيزايي بايد كار كنيد.حالا بايد پيداش كنيد توي رفرنس فلش :lol: عجب راهنمايي خفني. phoenix 27 شهريور 1383, 12:48من سعي مي كنم جواب هر 2 سوال را يكجا بدم: بعضي از زبانهاي برنامه نويسي اجازه تعريف كردن متغير به صورت dynamic را مي دهند بدين معني كه نام و مقدار متغير در runtime مشخص مي شود همچنين نام متغير مي تواند خود متغير باشد و يا در تتيجه يك فرايند منطقي بدست آيد. فلش يكي از اين زبانهاست. از زمان فلش 4 دو دستور eval و set براي ايجاد و بازخواني متغير ها وجود دارند. براي مثال براي ايجاد 10 متغير به نامهاي a 0 تا a 9 با مقدار هاي 0 تا 9 مي توان از set استفاده كرد: for(var i=0; i<10; i++) { set("a" + i, i); } همچنين براي بازخواني متغيرهاي بالا مي توان از eval استفاده كرد: for(var i=0; i<10; i++) { trace(eval("a" + i)); } eval وظيفه تبديل يك String را به Identifier و دستور set وظيفه نسبت دهي يك مقدار به يك متغير و ايجاد Identifer را به عهده دارند، Identifer در فلش هر آن چيزي است كه مقداري را در خود نگهداري مي كند مانند اسامي كلاسها، MovieClip ها، Object ها و يا متغير هاي ساده. اين دو دستور هر دو دستورهاي قديمي هستند شايد در يكي دو نسخه آيده فلش اين دستورات deprecate شوند. من تقريبا در هيچ جا استفاده اي براي اين دو دستور نمي بينم. از زمان فلش 5 امكان localize كردن data بر روي object ها با استفاده از Dot Notation و همچنين Bracket Notation وجود دارد بنابراين مي توان از اين روش به جاي استفاده از eval و set استفاده كرد: هنگامي كه يك متغير معلوم را در root_ تعريف مي كنيم مي توانيم از Dot Notation براي ايجاد و بازخواني استفاده كنيم: _root.variable = 1; trace(_root.variable); ولي وقتي بخواهيم يك متغير ديناميك تعريف كنيم Bracket Notation استفاده ميكنيم: _root["variable"] = 1; trace(_root["variable"]); اين شيوه كارامد تر و از نظر OO كاملتر از eval و set مي باشد بنابراين مثال بالا با اين روش به صورت زير در مي آيد: for(var i=0; i<10; i++) { this["a" + i] = i; } for(var i=0; i<10; i++) { trace(this["a" + i]); } استفاده هاي زيادي از Bracket Notation در فلش ميشود مثلا مي توان كليه property هاي يك Object را مرور كرد: obj = {val1:1, val2:2, val3:3, val4:4}; for(var i in obj) trace(i + ": " + obj[i]); و يا يك نكته بسيار جالب اينكه با استفاده از اين روش مي توان متغير هايي يا نام هاي غير مجاز ايجاد كرد: this["123"] = new Object(); this["123"]["@yahoo.com"] = new Object("[email protected]"); trace(this["123"]["@yahoo.com"]); در صورتي كه هرگز نميتوان اين متغيرها را به صورت Dot Notation استفاده كرد: trace([email protected]); // error naeim_crack 27 شهريور 1383, 16:35سلام phoenix دستت درد نكنه بابت اين توضيح كامل آقا يك مشگل پيش مياد اگه من بخوام به شكل زير عمل كنم اينو ببين tpath="_root.book.nima" [tpath].text="naeim"; ولي اين دستور اشتباه هستش و فلش اينو ايراد ميگره وحتما بايد به شكل زير باشه _root[tpath].text="naeim"; اين درسته ولي ديگه متغيير رو نمي خوني اما وقتي از eval استفاده كنيم فكر كنم بشه اما مشگل سر اين دستور هستش كه بعضي وقتها جواب رو درست ميده اما بعضي وقتي ميزنه سرش و ديگه كار نميكنه :lol: tpath="_root.book.nima" ttpath=eval(tpath); ttpath.text="naeim"; اگه دستور بالا كار كنه ديگه مشكلي پيش نمياد ولي كار نميكنه :cry: اين فايل رو يك بار درستش كردم كار ميكنه اما وقتي همون اكشن رو يه جاي ديگه ميبرم eval از كار ميوفته مرسي phoenix 27 شهريور 1383, 21:57در صورتي كه از absolute path استفاده كنيد و رشته اي كه با آن كار مي كنيد absolute path يك متغير باشد فقط با eval مي توان كار كرد: مثلا جايي از برنامه شما به صورت زير است: oo=targetPath(_parent); ll=oo+"."+dname; kk=eval(ll); trace("dname path ===> "+kk); اين كاملا درسته با كمي خلاصه سازي ميشه به اين صورت نوشتش: trace("dname path ===> " + eval(_parent+"."+dname)); اما هميشه مي توان از relative path و Bracket Notation استفاده كرد: trace("dname path ===> "+_parent[dname]); naeim_crack 27 شهريور 1383, 23:55سلام اقا دستت درد نكنه مشگلم حل شد خيلي جالب توضيح ميدي مرسي




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 4294]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن