کتابخانه‌ی استاندارد · سیستم و ابزار

پرچم flag

خواندن گزینه‌های خط فرمان مثل --port 8080 و -v با گونه‌ی درست و راهنمای خودکار.

واردسازی پرچم

بسته‌ی پرچم گزینه‌های خط فرمان را می‌خواند. هر پرچم یک نام بلند (--port)، یک نام کوتاه (-p)، مقدار پیش‌فرض و یک متن راهنما دارد. مقدار را می‌توان به هر دو شکل داد: --port=8080 یا --port 8080. هر آرگومانی که پرچم نباشد «موقعیتی» است، و پس از -- همه‌چیز موقعیتی حساب می‌شود.

--help و -h همیشه شناخته می‌شوند و متن راهنما خودکار ساخته می‌شود. به تجزیه آرگومان‌ها را بدون نام برنامه بدهید.

گونه‌ها

مجموعه پرچم FlagSet

ساختار مجموعه پرچم
مجموعه‌ی پرچم‌های یک برنامه و نتیجه‌ی تجزیه.
نامانگلیسیگونهتوضیح
progprogرشته = ""نام برنامه، برای راهنما.
descdescرشته = ""شرح برنامه، برای راهنما.
namesnamesوکتور<رشته>نام بلند پرچم‌ها.
shortsshortsوکتور<رشته>نام کوتاه پرچم‌ها.
kindskindsوکتور<صحیح>گونه‌ی هر پرچم.
valsvalsوکتور<رشته>مقدار فعلی هر پرچم به شکل متن.
defsdefsوکتور<رشته>مقدار پیش‌فرض هر پرچم.
helpshelpsوکتور<رشته>متن راهنمای هر پرچم.
was_setwas_setوکتور<منطقی>اینکه هر پرچم در خط فرمان آمده یا نه.
posposوکتور<رشته>آرگومان‌های موقعیتی.
errerrرشته = ""پیام آخرین خطای تجزیه.
help_wantedhelp_wantedمنطقی = نادرستاگر --help آمده باشد، درست است.
flag-Parse.salam
واردسازی پرچم

روال ریشه:
    ناپایا پ := پرچم.جدید("کپی"، "پرونده‌ها را رونوشت می‌کند")
    دیرکن پرچم.آزادسازی(پ)
    پرچم.افزودن منطقی(پ، "verbose"، "v"، نادرست، "گزارش کامل")
    پرچم.افزودن رشته(پ، "out"، "o"، "خروجی"، "پوشه‌ی مقصد")
    پرچم.افزودن صحیح(پ، "jobs"، "j"، ۱، "تعداد کار همزمان")
    پرچم.افزودن اعشاری(پ، "ratio"، "r"، ۱.۰، "نسبت فشرده‌سازی")
    ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
    دیرکن آرگ.آزادکن()
    هر آ در ["-v"، "--out=backup"، "-j"، "4"، "a.txt"، "b.txt"]:
        آرگ.بیفزا(آ)
    پایان
    سرچاپ پرچم.تجزیه(پ، آرگ)، "[" + پرچم.خطا(پ) + "]"
    سرچاپ پرچم.دریافت منطقی(پ، "verbose")، پرچم.دریافت رشته(پ، "out")، پرچم.دریافت صحیح(پ، "jobs")، پرچم.دریافت اعشاری(پ، "ratio")
    سرچاپ پرچم.تنظیم شده(پ، "jobs")، پرچم.تنظیم شده(پ، "ratio")
    سرچاپ پرچم.موقعیتی(پ)، پرچم.راهنما خواسته(پ)
    سرچاپ پرچم.نوع منطقی، پرچم.نوع رشته، پرچم.نوع صحیح، پرچم.نوع اعشاری
پایان
خروجیtrue [] true backup 4 1 true false ["a.txt", "b.txt"] false 0 1 2 3

پایاها و متغیرها

نوع منطقی FlagKindBool

پایا نوع منطقی: صحیح۳۲ = 0
گونه‌ی پرچم منطقی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

نوع رشته FlagKindStr

پایا نوع رشته: صحیح۳۲ = 1
گونه‌ی پرچم رشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

نوع صحیح FlagKindInt

پایا نوع صحیح: صحیح۳۲ = 2
گونه‌ی پرچم عدد صحیح.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

نوع اعشاری FlagKindFloat

پایا نوع اعشاری: صحیح۳۲ = 3
گونه‌ی پرچم عدد اعشاری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

روال‌ها

جدید New

روال جدید(prog_name: رشته، description: رشته): مجموعه پرچم
مجموعه‌ی پرچم تازه‌ای با نام و شرح برنامه می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

افزودن منطقی AddBool

روال افزودن منطقی(fs &: مجموعه پرچم، name: رشته، short: رشته، def: منطقی، help: رشته)
یک پرچم منطقی تعریف می‌کند؛ با آمدنش درست می‌شود و --name=false هم پذیرفته است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

افزودن رشته AddStr

روال افزودن رشته(fs &: مجموعه پرچم، name: رشته، short: رشته، def: رشته، help: رشته)
یک پرچم رشته تعریف می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

افزودن صحیح AddInt

روال افزودن صحیح(fs &: مجموعه پرچم، name: رشته، short: رشته، def: صحیح۶۴، help: رشته)
یک پرچم عدد صحیح تعریف می‌کند؛ رقم فارسی هم پذیرفته است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

افزودن اعشاری AddFloat

روال افزودن اعشاری(fs &: مجموعه پرچم، name: رشته، short: رشته، def: اعشار۶۴، help: رشته)
یک پرچم عدد اعشاری تعریف می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

تجزیه Parse

روال تجزیه(fs &: مجموعه پرچم، arglist: وکتور<رشته>): منطقی
آرگومان‌ها را تجزیه می‌کند. اگر پرچم ناشناخته، مقدار جاافتاده یا عدد نادرست ببیند، نادرست برمی‌گرداند و خطا دلیلش را می‌گوید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

دریافت رشته GetStr

روال دریافت رشته(fs &: مجموعه پرچم، name: رشته): رشته
مقدار پرچم رشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

دریافت صحیح GetInt

روال دریافت صحیح(fs &: مجموعه پرچم، name: رشته): صحیح۶۴
مقدار پرچم عدد صحیح.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

دریافت اعشاری GetFloat

روال دریافت اعشاری(fs &: مجموعه پرچم، name: رشته): اعشار۶۴
مقدار پرچم اعشاری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

دریافت منطقی GetBool

روال دریافت منطقی(fs &: مجموعه پرچم، name: رشته): منطقی
مقدار پرچم منطقی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

تنظیم شده WasSet

روال تنظیم شده(fs &: مجموعه پرچم، name: رشته): منطقی
اگر پرچم در خط فرمان آمده باشد، درست برمی‌گرداند؛ برای تشخیص «مقدار پیش‌فرض» از «کاربر خودش همین را داده».

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

موقعیتی Positional

روال موقعیتی(fs &: مجموعه پرچم): وکتور<رشته>
آرگومان‌های موقعیتی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam

راهنما خواسته HelpWanted

روال راهنما خواسته(fs &: مجموعه پرچم): منطقی
اگر کاربر راهنما خواسته باشد، درست برمی‌گرداند.
flag-Usage.salam
واردسازی پرچم

روال ریشه:
    ناپایا پ := پرچم.جدید("ابزار"، "یک ابزار نمونه")
    دیرکن پرچم.آزادسازی(پ)
    پرچم.افزودن منطقی(پ، "quiet"، "q"، نادرست، "بی‌صدا")
    پرچم.افزودن صحیح(پ، "port"، "p"، ۸۰۸۰، "درگاه")
    ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
    دیرکن آرگ.آزادکن()
    آرگ.بیفزا("--help")
    پرچم.تجزیه(پ، آرگ)
    اگر پرچم.راهنما خواسته(پ):
        چاپ پرچم.راهنما(پ)
    پایان
    ناپایا بد := وکتور {} برگردان وکتور<رشته>
    دیرکن بد.آزادکن()
    بد.بیفزا("--port=abc")
    ناپایا پ۲ := پرچم.جدید("ابزار"، "")
    دیرکن پرچم.آزادسازی(پ۲)
    پرچم.افزودن صحیح(پ۲، "port"، "p"، ۸۰۸۰، "درگاه")
    سرچاپ پرچم.تجزیه(پ۲، بد)، پرچم.خطا(پ۲)
پایان
خروجیUsage: ابزار [options] [args] یک ابزار نمونه Options: -q, --quiet بی‌صدا -p, --port <int> درگاه (default: 8080) -h, --help show this help false invalid int value for --port: abc

خطا Error

روال خطا(fs &: مجموعه پرچم): رشته
پیام خطای آخرین تجزیه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Usage.salam

راهنما Usage

روال راهنما(fs &: مجموعه پرچم): رشته
متن راهنمای کامل، با همه‌ی پرچم‌ها و مقدارهای پیش‌فرضشان.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Usage.salam

آزادسازی Free

روال آزادسازی(fs &: مجموعه پرچم)
حافظه‌ی مجموعه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam