الفرق بين المراجعتين ل"Ruby/Kernel/open"

من موسوعة حسوب
< Ruby‏ | Kernel
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>open‎</code> الخاص بالصنف <code>Kernel</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف...')
(لا فرق)

مراجعة 10:43، 22 أكتوبر 2018

ينشئ التابع open كائنًا من النوع IO متصلا بالمجرى أو الملف أو العملية الفرعية (subprocess) المحددة. إذا لم يبدأ path بشرطة عمودية (|) ، فسيُعامل كاسم الملف المراد فتحه باستخدام الوضع المحدد (افتراضيًا "r"). mode هو إما سلسلة نصية أو عدد صحيح. إن كان عددًا صحيحًا، فيجب أن يكون عبارة عن bitwise-or لراية open(2)، مثل File :: RDWR أو File :: EXCL. أما إذا كان سلسلة نصية، فهو إما "fmode" أو "fmode: ext_enc" أو "fmode: ext_enc: int_enc". راجع توثيق IO.new لمزيد من المعلومات حول موجّهات mode. في حالة إنشاء ملف، قد تُعيّن أذوناته الأولية باستخدام الوسيط perm. انظر File.new وصفحات open(2) و chmod(2) لمزيد من المعلومات حول للأذونات. في حال إعطاء كتلة، فستسدعى بتمرير كائن IO كوسيط، وسيُغلق IO تلقائيًا عند إنهاء الكتلة. وستعاد قيمة الكتلة. إذا بُدئت path بشرطة عمودية ("|") ، فسيتم إنشاء عملية فرعية، متصلة بالمُستدعي (caller) بواسطة زوج من الأنابيب (pipes). يمكن استخدام كائن IO المُعاد للكتابة في مجرى الإدخال القياسي والقراءة من مجرى الإخراج القياسي لهذه العملية الفرعية. إذا أعقُبت الشرطة العمودية بعلامة ناقص واحدة ("|-") ، فستنشئ روبي عملية فرعية جديدة، والتي ستكون متصلة بالعملية الأم. أما إذا لم يكن الأمر هو "-"، فستنفذ العملية الفرعية الأمر. عندما تكون العملية الفرعية هي Ruby (مفتوحة عبر "|-") ، استدعاء open سيعيد nil. في حال تمرير كتلة عند استدعاء open، فستنفذ الكتلة مرتين - مرة في العملية الأم ومرة في العملية الفرعية. الوسيط block سيكون كائنًا IO في العملية الأم و nil في العملية الفرعية. سيتم ريط أب (parent') الكائن IO ب $stdin و $stdout.. سيتم إنهاء العملية الفرعية في نهاية الكتلة. أمثلة القراءة من الملف "testfile":

الناتج:

افتح عملية فرعية وقراءة ناتجها:

الناتج:

Wed Apr  9 08:56:31 CDT 2003

افتح عملية فرعية تُشغّل نفس برنامج Ruby:

الناتج:

Got: in Child

افتح عملية فرعية باستخدام كتلة لاستلام كائن IO:

الناتج:

Got: in Child

البنية العامة

open(path [, mode [, perm]] [, opt])  io or nil
open(path [, mode [, perm]] [, opt]) {|io| block }   obj

المعاملات

path‎

mode‎

perm‎

opt‎

القيمة المُعادة

أمثلة

مثال على استخدام التابع open‎:

open("testfile") do |f|
  print f.gets
end

انظر أيضا

  • التابع loop: ينفذ التابع loop الكتلة البرمجية بشكل متكرر.
  • التابع p: يكتب التابع p لكل كائن يُمرر إليه ناتج التعبير يكتب مباشرة .inspect، متبوعًا بسطر جديد في مجرى الإخراج القياسي للبرنامج.

مصادر