الفرق بين المراجعتين لصفحة: «Ruby/IO/write-i»

من موسوعة حسوب
< Ruby‏ | IO
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>IO.write‎</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method تصنيف: Ruby IO...'
 
لا ملخص تعديل
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby IO]]
[[تصنيف: Ruby IO]]
يفتح التابع <code>write</code> الملف، ويتموضع (seeks) اختياريا عند الإزاحة <code>offset</code> المعطاة (انظر فقرة البنية العامة)، ثم يكتب <code>string</code>، ثم يعيد طول [[Ruby/String|السلسلة النصية]] المكتوبة. يضمن التابع <code>write</code> أن يُغلق الملف قبل العودة. إذا لم يتم إعطاء <code>offset</code> في وضع الكتابة (write mode)، سيتم اقتطاع الملف. خلاف ذلك، لا يُقتطع.
يكتب التابع <code>write</code> [[Ruby/String|السلاسل النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. يجب أن يكون المجرى مفتوحا في وضعية للكتابة. سيتم تحويل الوسائط غير النصية إلى [[Ruby/String|سلسلة نصية]] باستخدام <code>to_s</code>. يُعيد التابع <code>write</code> عدد البايتات المكتوبة في الإجمال.






إن كانت الوسيط الأخيرة عبارة عن [[Ruby/Hash|قاموس]]، فسيحدد الخيارات الداخلية للدالة open()‎.  يقبل المفاتيح التالية:
<code>produces:</code>


‎:encoding
<syntaxhighlight lang="ruby">This is a test
 
That was 15 bytes of data‎</syntaxhighlight>
[[Ruby/String|سلسلة نصية]] أو ترميز
 
يحدد ترميز [[Ruby/String|السلسلة النصية]] المقروءة. انظر صفحة <code>[[Ruby/Encoding/aliases|Encoding.aliases]]</code> للتعرف على الترميزات الممكنة.
 
‎:mode
 
[[Ruby/String|سلسلة نصية]] أو عدد صحيح
 
يحدد الوسيط <code>mode</code> لأجل الدالة open()‎.  يجب أن يبدأ بـ "w" أو "a" أو "r+‎" وإلا سيتسبب في حدوث خطأ. انظر صفحة <code>[[Ruby/IO/new|::new]]</code> لمزيد من قائمة الأوضاع الممكنة.
 
‎:perm
 
[[Ruby/Integer|عدد صحيح]]
 
يحدد الوسيط <code>perm</code> لأجل الدالة open()‎.
 
‎:open_args
 
[[Ruby/Array|مصفوفة]]
 
يحدد الوسائط الممررة إلى open()‎ على هيئة [[Ruby/Array|مصفوفة]]. لا يمكن استخدام هذا المفتاح مع مفاتيح أخرى.
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">write(name, string [, offset])  → integer
<syntaxhighlight lang="ruby">write(string, ...) → integer‎</syntaxhighlight>
write(name, string [, offset] [, opt])→ integer‎</syntaxhighlight>
==المعاملات==
==المعاملات==
===<code>name‎</code>===
اسم الملف
===<code>string‎</code>===
===<code>string‎</code>===
[[Ruby/String|سلسلة نصية]]
[[Ruby/String|سلسلة نصية]]
===<code>offset‎</code>===
===<code>...‎</code>===
عدد صحيح يمثل الإزاحة
===<code>opt‎</code>===
خيارات
==القيمة المُعادة==
==القيمة المُعادة==
==أمثلة==
==أمثلة==
مثال على استخدام التابع <code>write‎</code>:
مثال على استخدام التابع <code>write‎</code>:
<syntaxhighlight lang="ruby">IO.write("testfile", "0123456789", 20)  #=> 10
<syntaxhighlight lang="ruby">count = $stdout.write("This is", " a test\n")
# File could contain:  "This is line one\nThi0123456789two\nThis is line three\nAnd so on...\n"
puts "That was #{count} bytes of data"‎</syntaxhighlight>
IO.write("testfile", "0123456789")      #=> 10
# File would now read: "0123456789"‎</syntaxhighlight>
==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/IO/try_convert|try_convert]]</code>: يحاول تحويل الوسيط <code>obj</code> (انظر فقرة البنية العامة) إلى [[Ruby/IO|مجرى د/خ]] (<code>[[Ruby/IO|IO]]</code>)، باستخدام التابع <code>[[Ruby/IO/to_io|#to_io]]</code>. تم يعيد [[Ruby/IO|مجرى د/خ]] <code>[[Ruby/IO|IO]]</code> المُحوّل، أو يعيد <code>nil</code> إذا تعذر تحويل <code>obj</code> لأي سبب من الأسباب.
* التابع <code>[[Ruby/IO/ungetc|ungetc]]</code>: يدفع حرفا واحدا (المُمرر كوسيط) في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code>، بحيث ستعيدها القراءة التالية من المخزن المؤقت (buffer). لا يمكنك أن تدفع إلا حرف واحد فقط قبل عملية القراءة اللاحقة (أي، لن تتمكن من قراءة إلا آخر حرف من الحروف التي دفتعها). ليس له أي تأثير مع القراءات غير التخزينية (unbuffered reads) (مثل <code>IO#sysread</code>).
* التابع <code>[[Ruby/IO/left_shift|<<]]</code>: مجرى الإخراج النصي <code>[[Ruby/String|String]]</code> - يكتب <code>obj</code> (انظر فقرة البنية العامة) في المجرى <code>ios</code>. سيتم تحويل <code>obj</code> إلى [[Ruby/String|سلسلة نصية]] باستخدام <code>to_s</code>.
* التابع <code>[[Ruby/IO/write_nonblock|write_nonblock]]</code>: يكتب  [[Ruby/String|السلسلة النصية]] المعطاة في <code>ios</code> باستخدام استدعاء النظام write(2)‎ بعد تعيين O_NONBLOCK لواصف الملف (file descriptor) الأساسي.
==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/IO.html#method-c-write قسم  التابع write‎ في الصنف IO‎ في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/IO.html#method-i-write قسم  التابع write‎ في الصنف IO‎ في توثيق روبي الرسمي.]

مراجعة 21:41، 13 نوفمبر 2018

يكتب التابع write السلاسل النصية المعطاة في مجرى د/خ ios. يجب أن يكون المجرى مفتوحا في وضعية للكتابة. سيتم تحويل الوسائط غير النصية إلى سلسلة نصية باستخدام to_s. يُعيد التابع write عدد البايتات المكتوبة في الإجمال.


produces:

This is a test
That was 15 bytes of data

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

write(string, ...)  integer

المعاملات

string‎

سلسلة نصية

...‎

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

أمثلة

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

count = $stdout.write("This is", " a test\n")
puts "That was #{count} bytes of data"

انظر أيضا

  • التابع ungetc: يدفع حرفا واحدا (المُمرر كوسيط) في مجرى د/خ الذي استُدعي معه ios، بحيث ستعيدها القراءة التالية من المخزن المؤقت (buffer). لا يمكنك أن تدفع إلا حرف واحد فقط قبل عملية القراءة اللاحقة (أي، لن تتمكن من قراءة إلا آخر حرف من الحروف التي دفتعها). ليس له أي تأثير مع القراءات غير التخزينية (unbuffered reads) (مثل IO#sysread).
  • التابع write_nonblock: يكتب السلسلة النصية المعطاة في ios باستخدام استدعاء النظام write(2)‎ بعد تعيين O_NONBLOCK لواصف الملف (file descriptor) الأساسي.

مصادر