پرچم flag
خواندن گزینههای خط فرمان مثل --port 8080 و -v با گونهی درست و راهنمای خودکار.
واردسازی پرچم
بستهی پرچم گزینههای خط فرمان را میخواند. هر پرچم یک نام بلند (--port)، یک نام کوتاه (-p)، مقدار پیشفرض و یک متن راهنما دارد. مقدار را میتوان به هر دو شکل داد: --port=8080 یا --port 8080. هر آرگومانی که پرچم نباشد «موقعیتی» است، و پس از -- همهچیز موقعیتی حساب میشود.
--help و -h همیشه شناخته میشوند و متن راهنما خودکار ساخته میشود. به تجزیه آرگومانها را بدون نام برنامه بدهید.
گونهها
مجموعه پرچم FlagSet
ساختار مجموعه پرچم| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| prog | prog | رشته = "" | نام برنامه، برای راهنما. |
| desc | desc | رشته = "" | شرح برنامه، برای راهنما. |
| names | names | وکتور<رشته> | نام بلند پرچمها. |
| shorts | shorts | وکتور<رشته> | نام کوتاه پرچمها. |
| kinds | kinds | وکتور<صحیح> | گونهی هر پرچم. |
| vals | vals | وکتور<رشته> | مقدار فعلی هر پرچم به شکل متن. |
| defs | defs | وکتور<رشته> | مقدار پیشفرض هر پرچم. |
| helps | helps | وکتور<رشته> | متن راهنمای هر پرچم. |
| was_set | was_set | وکتور<منطقی> | اینکه هر پرچم در خط فرمان آمده یا نه. |
| pos | pos | وکتور<رشته> | آرگومانهای موقعیتی. |
| err | err | رشته = "" | پیام آخرین خطای تجزیه. |
| help_wanted | help_wanted | منطقی = نادرست | اگر --help آمده باشد، درست است. |
واردسازی پرچم
روال ریشه:
ناپایا پ := پرچم.جدید("کپی"، "پروندهها را رونوشت میکند")
دیرکن پرچم.آزادسازی(پ)
پرچم.افزودن منطقی(پ، "verbose"، "v"، نادرست، "گزارش کامل")
پرچم.افزودن رشته(پ، "out"، "o"، "خروجی"، "پوشهی مقصد")
پرچم.افزودن صحیح(پ، "jobs"، "j"، ۱، "تعداد کار همزمان")
پرچم.افزودن اعشاری(پ، "ratio"، "r"، ۱.۰، "نسبت فشردهسازی")
ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
دیرکن آرگ.آزادکن()
هر آ در ["-v"، "--out=backup"، "-j"، "4"، "a.txt"، "b.txt"]:
آرگ.بیفزا(آ)
پایان
سرچاپ پرچم.تجزیه(پ، آرگ)، "[" + پرچم.خطا(پ) + "]"
سرچاپ پرچم.دریافت منطقی(پ، "verbose")، پرچم.دریافت رشته(پ، "out")، پرچم.دریافت صحیح(پ، "jobs")، پرچم.دریافت اعشاری(پ، "ratio")
سرچاپ پرچم.تنظیم شده(پ، "jobs")، پرچم.تنظیم شده(پ، "ratio")
سرچاپ پرچم.موقعیتی(پ)، پرچم.راهنما خواسته(پ)
سرچاپ پرچم.نوع منطقی، پرچم.نوع رشته، پرچم.نوع صحیح، پرچم.نوع اعشاری
پایانپایاها و متغیرها
نوع منطقی 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 &: مجموعه پرچم): منطقیواردسازی پرچم
روال ریشه:
ناپایا پ := پرچم.جدید("ابزار"، "یک ابزار نمونه")
دیرکن پرچم.آزادسازی(پ)
پرچم.افزودن منطقی(پ، "quiet"، "q"، نادرست، "بیصدا")
پرچم.افزودن صحیح(پ، "port"، "p"، ۸۰۸۰، "درگاه")
ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
دیرکن آرگ.آزادکن()
آرگ.بیفزا("--help")
پرچم.تجزیه(پ، آرگ)
اگر پرچم.راهنما خواسته(پ):
چاپ پرچم.راهنما(پ)
پایان
ناپایا بد := وکتور {} برگردان وکتور<رشته>
دیرکن بد.آزادکن()
بد.بیفزا("--port=abc")
ناپایا پ۲ := پرچم.جدید("ابزار"، "")
دیرکن پرچم.آزادسازی(پ۲)
پرچم.افزودن صحیح(پ۲، "port"، "p"، ۸۰۸۰، "درگاه")
سرچاپ پرچم.تجزیه(پ۲، بد)، پرچم.خطا(پ۲)
پایانخطا Error
روال خطا(fs &: مجموعه پرچم): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: flag-Usage.salam
راهنما Usage
روال راهنما(fs &: مجموعه پرچم): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: flag-Usage.salam
آزادسازی Free
روال آزادسازی(fs &: مجموعه پرچم)نمونهی این مورد همراه با موارد بالاتر آمده است: flag-Parse.salam