توکن ها مقادیری را نشان می دهند که فقط در یک زمان بعدی در چرخه عمر یک برنامه قابل حل هستند (به چرخه عمر برنامه مراجعه کنید). به عنوان مثال ، نام یک سطل Amazon S3 که در برنامه AWS CDK خود تعریف می کنید ، فقط زمانی اختصاص می یابد که الگوی AWS CloudFormation سنتز شود. اگر uclet. bucketname را که یک رشته است ، چاپ می کنید ، می بینید که حاوی چیزی مانند موارد زیر است.
اینگونه است که AWS CDK نشانه ای را رمزگذاری می کند که ارزش آن هنوز در زمان ساخت و ساز مشخص نیست ، اما بعداً در دسترس خواهد بود. AWS CDK این نشانه ها را نشانه می نامد. در این حالت ، این نشانه ای است که به عنوان یک رشته رمزگذاری شده است.
می توانید این رشته را به اطراف منتقل کنید که گویی نام سطل است. در مثال زیر ، نام سطل به عنوان یک متغیر محیط به عملکرد AWS Lambda مشخص شده است.
هنگامی که در نهایت الگوی AWS CloudFormation سنتز می شود ، این نشانه به عنوان AWS CloudFormation ذاتی ارائه می شود<"Ref": "MyBucket">واددر زمان استقرار ، AWS CloudFormation جایگزین این ذاتی با نام واقعی سطل ایجاد شده است.
توکن ها اشیاء هستند که رابط IRESOLVEBLE را پیاده سازی می کنند ، که شامل یک روش حل واحد است. AWS CDK این روش را در طول سنتز می خواند تا مقدار نهایی را برای الگوی AWS CloudFormation تولید کند. توکن ها در فرآیند سنتز برای تولید مقادیر دلخواه از هر نوع شرکت می کنند.
شما به سختی هرگز با رابط IRESOLVABLE کار خواهید کرد. شما به احتمال زیاد فقط نسخه های رمزگذاری شده با رشته را مشاهده خواهید کرد.
توابع دیگر به طور معمول فقط آرگومان هایی از انواع اساسی مانند رشته یا شماره را می پذیرند. برای استفاده از نشانه ها در این موارد ، می توانید با استفاده از روشهای استاتیک در کلاس CDK. Token ، آنها را در یکی از سه نوع رمزگذاری کنید.
Token. Asstring برای تولید یک رمزگذاری رشته (یا تماس . toString () روی شیء توکن)
token. aslist برای تولید یک لیست رمزگذاری
token. asnumber برای تولید یک رمزگذاری عددی
اینها یک مقدار دلخواه را به خود اختصاص می دهند ، که می تواند یک IRESOLVEVE باشد و آنها را به یک مقدار بدوی از نوع مشخص شده رمزگذاری می کند.
از آنجا که هر یک از انواع قبلی به طور بالقوه می تواند یک نشانه رمزگذاری شده باشد ، هنگام تجزیه یا سعی در خواندن مطالب آنها ، مراقب باشید. به عنوان مثال ، اگر سعی می کنید یک رشته را برای استخراج مقادیر از آن تجزیه کنید ، و رشته یک نشانه رمزگذاری شده است ، تجزیه شما شکست می خورد. به همین ترتیب ، اگر سعی می کنید طول یک آرایه را پرس و جو کنید یا عملیات ریاضی را با یک شماره انجام دهید ، ابتدا باید تأیید کنید که آنها نشانه های رمزگذاری نشده نیستند.
برای بررسی اینکه آیا یک مقدار دارای یک نشانه حل نشده در آن است ، با روش token. isunresolved (پایتون: is_unresolved) تماس بگیرید.
مثال زیر تأیید می کند که یک مقدار رشته ، که می تواند یک نشانه باشد ، بیش از 10 کاراکتر طول ندارد.
اگر نام یک نشانه باشد ، اعتبار سنجی انجام نمی شود و هنوز هم در مرحله بعدی از چرخه عمر ، مانند هنگام استقرار ، خطایی می تواند رخ دهد.
برای فرار از سیستم نوع می توانید از رمزگذاری های توکن استفاده کنید. به عنوان مثال ، شما می توانید یک نشانه را که در زمان سنتز مقدار عدد تولید می کند ، وارد کنید. اگر از این توابع استفاده می کنید ، این وظیفه شماست که اطمینان حاصل کنید که الگوی شما پس از سنتز به حالت قابل استفاده برطرف می شود.
نشانه های رمزگذاری شده رشته مانند موارد زیر به نظر می رسند.
همانطور که در مثال زیر نشان داده شده است ، می توان آنها را مانند رشته های معمولی منتقل کرد و می توان آنها را هماهنگ کرد.
اگر زبان شما از آن پشتیبانی می کند ، می توانید از درون یابی رشته نیز استفاده کنید ، همانطور که در مثال زیر نشان داده شده است.
از دستکاری رشته به روش های دیگر خودداری کنید. به عنوان مثال ، گرفتن بستر یک رشته احتمالاً نشانه رشته را شکسته است.
نشانه های رمزگذاری شده لیست مانند موارد زیر به نظر می رسند:
تنها کاری که با این لیست ها انجام می شود ، انتقال مستقیم آنها به سازه های دیگر است. نشانه های موجود در فرم لیست رشته ها نمی توانند به هم پیوسته باشند ، و همچنین نمی توان عنصری را از این نشانه گرفت. تنها راه ایمن برای دستکاری آنها استفاده از توابع ذاتی AWS CloudFormation مانند Fn. Select است.
نشانه های رمزگذاری شده شماره مجموعه ای از شماره های کوچک شناور منفی هستند که مانند موارد زیر به نظر می رسند.
همانطور که با نشانه های لیست ، شما نمی توانید مقدار عدد را تغییر دهید ، زیرا انجام این کار احتمالاً تعداد نشانه ها را می شکند. تنها عملیات مجاز انتقال مقدار در اطراف به سازه دیگر است.
علاوه بر نشان دادن مقادیر زمان استقرار ، مانند پارامترهای CloudFormation AWS ، از نشانه ها نیز معمولاً برای نشان دادن مقادیر تنبل زمان سنتز استفاده می شود. اینها مقادیری هستند که مقدار نهایی قبل از اتمام سنتز تعیین می شود ، اما در نقطه ای که مقدار ساخته می شود نیست. از نشانه ها برای انتقال یک رشته تحت اللفظی یا مقدار عدد به سازه دیگر استفاده کنید ، در حالی که مقدار واقعی در زمان سنتز ممکن است به برخی از محاسبه هایی که هنوز رخ داده است بستگی داشته باشد.
شما می توانید با استفاده از روشهای استاتیک در کلاس تنبل ، مانند Lazy. String و Lazy. Number ، نشانه هایی را به نمایندگی از مقادیر تنبل زمان مصنوعی بسازید. این روشها شیء را می پذیرند که خاصیت تولید آن تابعی است که یک آرگومان زمینه را می پذیرد و مقدار نهایی را در صورت فراخوانی باز می گرداند.
مثال زیر یک گروه مقیاس گذاری خودکار ایجاد می کند که ظرفیت آن پس از ایجاد آن تعیین می شود.
بعضی اوقات شما می خواهید یک رشته JSON از داده های دلخواه تولید کنید ، و ممکن است نمی دانید که آیا داده ها حاوی نشانه ها هستند یا خیر. برای اینکه به درستی JSON هرگونه ساختار داده ، بدون در نظر گرفتن اینکه شامل نشانه ها است ، از روش stack. tojsonstring استفاده کنید ، همانطور که در مثال زیر نشان داده شده است.
منصة التداول الأكثر ثقة...
برچسب :
نویسنده : احمد نجفی
بازدید : <-PostHit->