گزینه ماژول std ::

ساخت وبلاگ

گزینه Type یک مقدار اختیاری را نشان می دهد: هر گزینه یا برخی است و حاوی یک مقدار ، یا هیچ کدام است ، و این کار را نمی کند. انواع گزینه ها در Rust Code بسیار متداول هستند ، زیرا تعدادی استفاده از آنها وجود دارد:

  • مقادیر اولیه
  • مقادیر بازگشت برای توابع که در کل محدوده ورودی آنها تعریف نشده اند (توابع جزئی)
  • مقدار بازگشت را برای گزارش خطاهای ساده ، جایی که هیچ یک از آنها به صورت خطا بازگردانده نمی شود
  • زمینه های ساختار اختیاری
  • زمینه های ساختاری که می توانند وام یا "گرفته شده" باشند
  • آرگومان های عملکرد اختیاری
  • نشانگرهای قابل برگشت
  • تعویض چیزها از شرایط دشوار

گزینه S معمولاً با تطبیق الگوی برای پرس و جو از حضور یک مقدار و اقدامات انجام می شود ، همیشه برای هیچ موردی حساب می شود.

گزینه ها و نشانگرها (نشانگرهای "تهی")

انواع اشاره گر Rust همیشه باید به یک مکان معتبر اشاره کنند. هیچ مرجع "تهی" وجود ندارد. در عوض ، Rust دارای نشانگرهای اختیاری است ، مانند جعبه اختیاری ، گزینه.

مثال زیر از گزینه برای ایجاد جعبه اختیاری i32 استفاده می کند. توجه کنید که برای استفاده از مقدار داخلی i32 ، عملکرد check_optional ابتدا باید از تطبیق الگوی استفاده کند تا مشخص کند آیا جعبه دارای یک مقدار است (یعنی ، این برخی (.)) است یا نه (هیچ).

نمایندگی

زنگ زدگی برای بهینه سازی انواع زیر t به طوری که گزینه دارای اندازه T است:

این "بهینه سازی اشاره گر تهی" یا NPO نامیده می شود.

بیشتر تضمین شده است که ، برای موارد فوق ، می توان از همه مقادیر معتبر t به گزینه و از برخی :: (_) به T (اما انتقال هیچکدام از :: به T رفتار نامشخص است) انتقال دهید.

بررسی اجمالی

علاوه بر کار با تطبیق الگوی ، گزینه طیف گسترده ای از روش های مختلف را ارائه می دهد.

پرس و جو نوع

روشهای IS_SOME و IS_NONE به ترتیب در صورتی که گزینه یا هیچ کدام باشد ، درست باز می گردند.

آداپتور برای کار با منابع

  • تبدیل از گزینه های تبدیل از گزینه و گزینه mutoptionto تبدیل گزینه های تبدیل از و گزینه های تبدیل از گزینه های تبدیل از و mutoptionto تبدیل از پین<&Option>به گزینهتبدیل از پین<&mutOption>به گزینه

استخراج مقدار موجود

این روشها مقدار موجود را در یک گزینه استخراج می کنند که در آن نوع دیگری باشد. اگر گزینه هیچ کدام نیست:

  • وحشت با وحشت پیام سفارشی ارائه شده با یک پیام عمومی ، مقدار پیش فرض ارائه شده را برمی گرداند مقدار پیش فرض نوع T (که باید صفت پیش فرض را پیاده سازی کند) نتیجه ارزیابی عملکرد ارائه شده را برمی گرداند

تبدیل مقادیر حاوی

این روش ها گزینه را به نتیجه تبدیل می کنند:

  • برخی از (v) را به OK (v) تبدیل می کند ، و هیچ یک از آنها با استفاده از مقدار پیش فرض پیش فرض ارائه شده ، برخی از (v) را به OK (v) تبدیل می کند ، و هیچ یک به یک مقدار خطا با استفاده از عملکرد ارائه شده گزینه ای را منتقل می کند. نتیجه ای در نتیجه یک گزینه

این روشها نوع دیگری را تغییر می دهند:

  • calls the provided predicate function on the contained value t if the Option is Some(t) , and retus Some(t) if the function retus true ; otherwise, retus None removes one level of nesting from an Option>گزینه را با استفاده از تابع ارائه شده به مقدار موجود در برخی از گزینه ها تبدیل می کند و مقادیر بدون تغییر را ترک نمی کند
  • تابع ارائه شده را به مقدار موجود در برخی از آنها اعمال می کند ، یا مقدار پیش فرض ارائه شده را باز می گرداند اگر گزینه هیچ یک از عملکرد ارائه شده را برای مقدار موجود در برخی از آنها اعمال کند ، یا نتیجه ارزیابی عملکرد Fallback ارائه شده را در صورت عدم وجود گزینه باز می گرداند.

این روش ها برخی از انواع دو مقدار گزینه را ترکیب می کنند:

  • برخی از ((S ، O)) را برمی گرداند اگر خود برخی از (ها) باشد و مقدار گزینه ارائه شده برخی (O) باشد. در غیر این صورت ، بازگشت هیچ یک از عملکرد ارائه شده f را فراخوانی نمی کند و برخی از (f (s ، o)) را برمی گرداند اگر خود برخی از (ها) باشد و مقدار گزینه ارائه شده برخی (o) باشد. در غیر این صورت ، هیچ یک را برمی گرداند

اپراتورهای بولی

این روشها این گزینه را به عنوان یک مقدار بولی رفتار می کنند ، جایی که برخی مانند درست عمل می کنند و هیچکدام مانند کاذب عمل نمی کنند. دو دسته از این روش ها وجود دارد: مواردی که گزینه ای را به عنوان ورودی انتخاب می کنند ، و مواردی که یک عملکرد را به عنوان ورودی (برای ارزیابی تنبل) می گیرند.

روشهای و ، و ، و XOR گزینه دیگری را به عنوان ورودی می گیرند و گزینه ای را به عنوان خروجی تولید می کنند. فقط روش و روش می تواند یک مقدار گزینه با نوع داخلی متفاوت از گزینه را تولید کند.

روش خود ورودی خروجی
وت هیچ یک (نادیده گرفته شده) هیچ یک
وت برخی (x) هیچ یک هیچ یک
وت برخی (x) برخی (y) برخی (y)
یا هیچ یک هیچ یک هیچ یک
یا هیچ یک برخی (y) برخی (y)
یا برخی (x) (نادیده گرفته شده) برخی (x)
زور هیچ یک هیچ یک هیچ یک
زور هیچ یک برخی (y) برخی (y)
زور برخی (x) هیچ یک برخی (x)
زور برخی (x) برخی (y) هیچ یک

روشهای and_then و or_else عملکردی را به عنوان ورودی می گیرند و فقط عملکرد را در صورت نیاز به تولید یک مقدار جدید ارزیابی می کنند. فقط روش AND_THEN می تواند مقدار گزینه ای را با نوع داخلی متفاوت از گزینه ایجاد کند.

روش خود ورودی تابع نتیجه عملکرد خروجی
و_ سپس هیچ یک (ارائه نشده است) (ارزیابی نشده است) هیچ یک
و_ سپس برخی (x) x هیچ یک هیچ یک
و_ سپس برخی (x) x برخی (y) برخی (y)
یا چیز دیگر هیچ یک (ارائه نشده است) هیچ یک هیچ یک
یا چیز دیگر هیچ یک (ارائه نشده است) برخی (y) برخی (y)
یا چیز دیگر برخی (x) (ارائه نشده است) (ارزیابی نشده است) برخی (x)

این نمونه ای از استفاده از روش هایی مانند and_then و یا در خط لوله تماس های روش است. مراحل اولیه از مقادیر خرابی خط لوله (هیچ) از طریق بدون تغییر ، و ادامه پردازش بر روی مقادیر موفقیت (برخی). در پایان ، یا در صورت دریافت هیچ کدام ، پیام خطا را جایگزین می کند.

اپراتورهای مقایسه

اگر T PartialORD را پیاده سازی کند ، گزینه اجرای PartialORD خود را استخراج می کند. با این ترتیب ، هیچ یک نسبت به برخی از آنها مقایسه نمی شود ، و دو برخی از آنها به همان روشی که مقادیر حاوی آنها در t مقایسه می کنند ، مقایسه می کنند. اگر T همچنین ORD را پیاده سازی کند ، پس گزینه نیز چنین است.

تکرار بیش از گزینه

یک گزینه می تواند بیش از حد تکرار شود. در صورت نیاز به تکرار کننده ای که به طور مشروط خالی باشد ، می تواند مفید باشد. تکرار کننده یا یک مقدار واحد تولید می کند (وقتی گزینه مقداری است) ، یا مقادیری تولید نمی کند (وقتی گزینه هیچ کدام نیست). به عنوان مثال ، در صورتی که گزینه (v) باشد ، مانند یک بار (v) عمل می کند ، و مانند خالی () اگر گزینه وجود ندارد.

  • گزینه را مصرف می کند و مقدار موجود را تولید می کند ، یک مرجع تغییر ناپذیر از نوع و t به مقدار موجود ، یک مرجع قابل تغییر از نوع و mUt t را به مقدار موجود تولید می کند

یک تکرار بیش از گزینه می تواند هنگام زنجیر کردن تکرارها مفید باشد ، به عنوان مثال ، برای قرار دادن موارد به صورت مشروط.(همیشه لازم نیست که صریحاً با یک سازنده تکرار شونده تماس بگیرید: بسیاری از روش های تکرار شونده که سایر تکرارها را می پذیرند ، انواع قابل تکرار را نیز می پذیرند که به صورت کننده اجرا می شوند ، که شامل گزینه است.)

یکی از دلایل زنجیره ای از این روش این است که یک عملکرد بازگرداندن به تکرار کننده باید تمام مقادیر بازگشت ممکن از یک نوع بتونی یکسان باشد. زنجیر کردن یک گزینه تکرار شده می تواند به آن کمک کند.

اگر سعی کنیم همین کار را انجام دهیم ، اما با استفاده از یک بار () و خالی () ، دیگر نمی توانیم تکرار کننده را برگردانیم زیرا انواع بتونی مقادیر برگشتی متفاوت است.

جمع آوری در گزینه

گزینه پیاده سازی ویژگی fromiterator ، که به یک تکرار کننده بر مقادیر گزینه اجازه می دهد تا در گزینه ای از مجموعه ای از هر مقدار موجود از مقادیر گزینه اصلی جمع آوری شود ، یا در صورتی که هیچ یک از عناصر وجود نداشته باشد.

گزینه همچنین ویژگی های محصول و جمع را پیاده سازی می کند و به یک تکرار بر مقادیر گزینه اجازه می دهد تا روش های محصول و جمع را ارائه دهد.

اصلاح یک گزینه در محل

این روشها یک مرجع قابل تغییر را به مقدار موجود یک گزینه باز می گردانند:

  • یک مقدار را درج می کند ، رها کردن هر یک از محتوای قدیمی مقدار فعلی را دریافت می کند ، در صورت عدم وجود مقدار فعلی ، یک مقدار پیش فرض ارائه شده را وارد می کند ، مقدار پیش فرض نوع T (که باید به طور پیش فرض پیاده سازی کند) در صورت عدم وجود مقدار فعلی ، درج می شود ، درج می شود. پیش فرض محاسبه شده توسط عملکرد ارائه شده در صورتی که باشد

این روشها مالکیت مقدار موجود یک گزینه را منتقل می کنند:

  • در صورت وجود ، مالکیت مقدار موجود در یک گزینه را می گیرد ، گزینه را با هیچ یک از گزینه های موجود در یک گزینه ، در صورت وجود ، تعویض گزینه را با برخی از موارد حاوی مقدار ارائه شده جایگزین می کند.

مثال ها

تطبیق الگوی اساسی در گزینه:

قبل از یک حلقه ، نتیجه را به هیچ وجه اولیه کنید:

این برای هر ABI دیگر صادق است: Exte "Abi" Fn (به عنوان مثال ، سیستم خارجی "Fn) ↩

فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید

برچسب : نویسنده : احمد قانع پور بازدید : 47 تاريخ : يکشنبه 20 فروردين 1402 ساعت: 12:56