الفرق بين المراجعتين لصفحة: «Ruby/ARGF»
لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 15: | سطر 15: | ||
بعد قراءة أحد الملفات الموجودة في <code>ARGV</code>، تزيل <code>ARGF</code> هذا الملف من المصفوفة. بناءً على ذلك، ستصبح <code>ARGV</code> فارغةً بعد قراءة جميع الملفات. | بعد قراءة أحد الملفات الموجودة في <code>ARGV</code>، تزيل <code>ARGF</code> هذا الملف من المصفوفة. بناءً على ذلك، ستصبح <code>ARGV</code> فارغةً بعد قراءة جميع الملفات. | ||
يمكنك تعديل <code>ARGV</code> بنفسك للتحكم في عملها. إن أزلت مثلًا ملفًا من <code>ARGV</code>، فستتجاهله <code>ARGF</code>؛ وإذا أضفت ملفات إلى <code>ARGV</code>، فستُعامل كما لو أنها مُرِّرت في سطر الأوامر. تفحَّص مثلًا الشيفرة التالية: | يمكنك تعديل <code>ARGV</code> بنفسك للتحكم في عملها. إن أزلت مثلًا ملفًا من <code>ARGV</code>، فستتجاهله <code>ARGF</code>؛ وإذا أضفت ملفات إلى <code>ARGV</code>، فستُعامل كما لو أنها مُرِّرت في سطر الأوامر. تفحَّص مثلًا الشيفرة التالية:<syntaxhighlight lang="ruby"> | ||
ARGV.replace ["file1"] | |||
ARGF.readlines # في مصفوفة file1 إعادة محتويات الملف | |||
ARGV #=> [] | |||
ARGV.replace ["file2", "file3"] | |||
ARGF.read # file3 والملف file2 إعادة محتويات الملف | |||
</syntaxhighlight>إن كانت ARGV فارغةً، فستتصرّف وكأنّها تحتوي مجرى الدخل القياسي (STDIN)، أي البيانات المُرسلة عبر أنبوب (piped) إلى ملفك البرمجي (script). إليك مثلًا هذا المثال البسيط:<syntaxhighlight lang="ruby"> | |||
إن كانت | $ echo "glark" | ruby -e 'p ARGF.read' | ||
"glark\n" | |||
</syntaxhighlight> | |||
==مصادر== | ==مصادر== | ||
* صفحة الصنف ARGF في توثيق روبي الرسمي. | * صفحة الصنف ARGF في توثيق روبي الرسمي. |
مراجعة 11:29، 11 سبتمبر 2018
الصنف ARGF
هو مجرى (stream) صُمِّم ليُستخدَم في الملفات البرمجية (scritps) التي تُعالج الملفات المُمرَّرة إليها على شكل وسائط في سطر الأوامر (command-line arguments)، أو المُمرَّرة عبر مجرى الدخل القياسي (STDIN
).
تُخزَّن الوسائط المُمرَّرة للملف البرمجي في المصفوفة ARGV، إذ يخزَّن وسيط واحد في كل عنصر. تفترض ARGF
أنّ الوسائط التي ليست أسماء ملفات (filenames) قد أزيلت من ARGV
. انظر الشيفرة التالية مثلًا:
$ ruby argf.rb --verbose file1 file2
ARGV #=> ["--verbose", "file1", "file2"]
option = ARGV.shift #=> "--verbose"
ARGV #=> ["file1", "file2"]
يمكنك الآن استخدام ARGF
للعمل مع سلسلة من كل هذه الملفات المسماة (named files). على سبيل المثال، ستعيد العبارة ARGF.read
محتويات الملف file1
متبوعةً بمحتويات الملف file2
.
بعد قراءة أحد الملفات الموجودة في ARGV
، تزيل ARGF
هذا الملف من المصفوفة. بناءً على ذلك، ستصبح ARGV
فارغةً بعد قراءة جميع الملفات.
يمكنك تعديل ARGV
بنفسك للتحكم في عملها. إن أزلت مثلًا ملفًا من ARGV
، فستتجاهله ARGF
؛ وإذا أضفت ملفات إلى ARGV
، فستُعامل كما لو أنها مُرِّرت في سطر الأوامر. تفحَّص مثلًا الشيفرة التالية:
ARGV.replace ["file1"]
ARGF.readlines # في مصفوفة file1 إعادة محتويات الملف
ARGV #=> []
ARGV.replace ["file2", "file3"]
ARGF.read # file3 والملف file2 إعادة محتويات الملف
إن كانت ARGV فارغةً، فستتصرّف وكأنّها تحتوي مجرى الدخل القياسي (STDIN)، أي البيانات المُرسلة عبر أنبوب (piped) إلى ملفك البرمجي (script). إليك مثلًا هذا المثال البسيط:
$ echo "glark" | ruby -e 'p ARGF.read'
"glark\n"
مصادر
- صفحة الصنف ARGF في توثيق روبي الرسمي.