Fsharp Basic I/O Fsharp Basic I/O Fsharp Basic I/O
Basic I/O در #F
Basic Input Output شامل :
- خواندن و نوشتن از console.
- خواندن و نوشتن از file.
ماژول Core.Printf در #F
ما از تابع printf و printfn برای نوشتن در کنسول استفاده می کنیم.
در این قسمت به جزئیات ماژول printf در #F نگاهی داریم. جدا از تابع بالا ماژول Core.printf در اف شارپ متدهای متغیر دیگری برای printig و formatting با استفاده از نشانه ی % به عنوان placeholders دارد.
جدول خلاصه توضیحات در مورد متد های نشان داد شده را دنبال کنید
Value | Description |
bprintf : StringBuilder → BuilderFormat<‘T> → ‘T | پرینت به یک StringBuilder |
eprintf : TextWriterFormat<‘T> → ‘T | پرینت فرمت خروجی به stderr |
eprintfn : TextWriterFormat<‘T> → ‘T | پرینت فرمت خروجی به stderr و اضافه کردن newline (خط جدید). |
failwithf : StringFormat<‘T,’Result> → ‘T | پرینت به یک بافر رشته و اجرای یک exception با نتیجه داده شده. |
fprintf : TextWriter → TextWriterFormat<‘T> → ‘T | پرینت به یک نویسنده متن |
fprintfn : TextWriter → TextWriterFormat<‘T> → ‘T | پرینت به یک نویسنده متن و اضافه کردن newline (خط جدید). |
kbprintf : (unit → ‘Result) → StringBuilder → BuilderFormat<‘T,’Result> → ‘T | شبیه bprintf، اما تابع تعیین شده را برای تولید نتیجه فراخوانی می کند. |
kfprintf : (unit → ‘Result) → TextWriter → TextWriterFormat<‘T,’Result> → ‘T | شبیه fprintf، اما تابع تعیین شده رابرای تولید نتیجه فراخوانی می کند. |
kprintf : (string → ‘Result) → StringFormat<‘T,’Result> → ‘T | شبیه printf، اما تابع تعیین شده رابرای تولید نتیجه فراخوانی می کند. برای مثال این اجازه می دهد پرینت اجباری یک flush را بعد از این که همه ورودی ها وارد کانال شده باشند. اما نه قبل آن. |
ksprintf : (string → ‘Result) → StringFormat<‘T,’Result> → ‘T | شبیه sprintf اما تابع تعیین شده رابرای تولید نتیجه فراخوانی می کند. |
printf : TextWriterFormat<‘T> → ‘T | فرمت خروجی را به stdout پرینت می کند. |
printfn : TextWriterFormat<‘T> → ‘T | فرمت خروجی را به stdout پرینت می کند. newline (خط جدید) اضافه می کند. |
sprintf : StringFormat<‘T> → ‘T | رشته را به وسیله یک بافر رشته internal پرینت می کند و نتیجه را به عنوان رشته باز می گرداند. |
خصوصیات Format در #F
خصوصیات Format در #F برای فرمت ورودی و خروجی استفاده می شوند. با توجه به نیاز برنامه نویسان.
این ها رشته هایی با نشانه ی % که مشخص کننده فرمت placeholders هستند می باشند.
سینتکس فرمت placeholders در زیر آمده است. (خصوصیات Format در #F)
1 | %[flags][width][.precision][type] |
تفسیر type در زیر آمده است.
مقدار | توضیحات |
b% | فرمت یک بولین ،فرمت می کند به عنوان true یا fals |
c% | یک کاراکتر را فرمت می کند. |
s% | فرمت یک رشته، فرمت به عنوان محتوا، بدون تفسیر هیچ کاراکتر گریزی (escape ) |
d, %i% | فرمت هر نوع basic integer ،فرمت می کند به عنوان decimal integer و signed اگر basic integer از نوع signed باشد. |
u% | فرمت هر نوع basic integer به عنوان یک unsigned decimal integer
|
x% | فرمت هر نوع basic integer به عنوان یک unsigned hexadecimal integer ،با استفاده از حروف کوچک الفبا از aتا f
|
X% | فرمت هر نوع basic integer به عنوان یک unsigned hexadecimal intege، با استفاده از حروف بزرگ A تا F
|
o% | فرمت هر نوع basic integer فرمت می شود به عنوان یک unsigned octal integer .
|
e, %E, %f, %F, %g, %G% | فرمت هر نوع (basic floating point type (float, float32 فرمت می شود با استفاده از یک مشخصه فرمت C-style floating point.
|
e, %E% | فرمت یک مقدار signed با داشتن فرم [-]d.dddde[sign]ddd که d تنها یک decimal digit و dddd یکی یا بیش تر decimal digits است. ddd دقیقا سه decimal digits است و sign یا علامت – یا + است.
|
f% | فرمت یک مقدار signed فرم [-]dddd.dddd را دارد که dddd یکی یا بیش تر decimal digits است. تعداد digits یا رقم ها قبل از decimal point یا ممیز اعشاری به دامنه ی اعداد دارد تعدا اعشار بعد از ممیز اعشاری بستگی به دقت درخواست دارد.
|
g, %G% | فرمت یک مقدار signed در فرمت f یا e پرینت می شود. هر یک خلاصه ای برای دادن مقدار و رقم دقت Formats a signed value printed in f or e format, whichever is more compact for the given value and precision. |
M% | فرمت یک مقدار Decimal
|
O% | فرمت های هر مقدار، پرینت می شود به وسیله boxing آبجکت و با استفاده از متد ToString
|
A, %+A% | فرمت های هر مقدار، پرینت می شود با تنظیمات لایوت پیش فرض. برای پرینت ساختار مشخصه unions با نمایش internal و private از A+% استفاده می شود
|
a% | یک فرمت تصریح کننده عمومی، نیاز به دو آرگومان دارد. اولین آرگومان یک تابع است که دو ارگومان را می پذیرد: اولی یک پارامتر کانتکست نوع appropriate یا اختصاصی برای دادن فرمت تابع(برای مثال یک TextWriter ). دومی یک مقدار برای پرینت و این که هر کدام از outputs یا تکست appropriate را بازگردانند. دومین آرگومان مقدار دقیق تری برای پرینت است.
|
t% | یک تصریح کننده فرمت جنرال، نیاز به یک آرگومان دارد. فانکشنی که پارامتر کانتکست نوع appropriate را برای تابع فرمت (aTextWriter) داده شده بپذیرد و تابعی که هر کدام ازخروجی ها یا بازگشت appropriate text را دارد. نوع Basic integer هستند byte, sbyte, int16, uint16, int32, uint32, int64, uint64, nativeint و unativeint. نوع Basic floating point هستند float و float32 |
عرض یک پارامتر اختیاری است. این یک عدد صحیح است که عرض حداقل نتیجه را نشان می دهد. به عنوان مثال،٪ ۵d عدد صحیح را با حداقل فضاهای ۵ کاراکتری چاپ می کند.
flags معتبر در جدول داده شده توضیح داده شده اند.
مقدار | توضیحات |
۰ | اضافه کردن صفر به جای اسپیس برای ایجاد پهنای مورد نیاز را تعیین می کند.
|
– | برای left-justify نتایج با پهنای مشخص شده را مشخص می کند.
|
+ | مشخص می کند که یک کاراکتر + اضافه شود اگر عدد مثبت باشد (برای مطابقت یک علامت – برای اعداد منفی). |
‘ ‘ (space) | مشخص می کند اضافه کردن فضای اضافی اگر عدد مثبت است (برای مطابقت یک علامت – برای اعداد منفی). |
# | بی اعتبار. |
خب تا این جا از مبحث Basic I/O در #F به خصوصیات Format در #F رسیدیم.
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | printf "Hello " printf "World" printfn "" printfn "Hello " printfn "World" printf "Hi, I'm %s and I'm a %s" "Rohit" "Medical Student" printfn "d: %f" 212.098f printfn "e: %f" 504.768f printfn "x: %g" 212.098f printfn "y: %g" 504.768f printfn "x: %e" 212.098f printfn "y: %e" 504.768f printfn "True: %b" true |
خروجی
1 2 3 4 5 6 7 8 9 10 | Hello World Hello World Hi, I'm Rohit and I'm a Medical Studentd: 212.098000 e: 504.768000 x: 212.098 y: 504.768 x: 2.120980e+002 y: 5.047680e+002 True: true |