الفرق بين المراجعتين ل"Ruby/IO/gets"

من موسوعة حسوب
< Ruby‏ | IO
اذهب إلى التنقل اذهب إلى البحث
ط (تدقيق)
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby IO]]
 
[[تصنيف: Ruby IO]]
يقرأ التابع <code>gets</code> السطر التالي من [[Ruby/IO|مجرى د/خ]]. السطور مفصولة بالوسيط <code>sep</code> (انظر فقرة البنية العامة). إن كان الفاصل يساوي <code>nil</code>، فسيقرأ المحتويات بالكامل، أما إن كان معدوم الطول، فستُقرؤ فقرة في كل مرة من مجرى الإدخال (تُفصل الفقرات بسطرين منفصلين).  
+
يجلب التابع <code>gets</code> السطر التالي من [[Ruby/IO|المجرى]] الذي استدعي معه.  
  
يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.  
+
يجب أن يكون المجرى مفتوحًا في وضعية القراءة وإلا سيُطلَق الاستثناء <code>[[Ruby/IOError|IOError]]</code>.  
  
سيُعاد السطر المقروء، وستُحال قيمته على المتغير ‎<code>$_‎</code>. أو ستعاد القيمة <code>nil</code> إن استُدعي التابع <code>gets</code> عند نهاية الملف. 
+
إن كان [[Ruby/IO|المجرى]] يحتوي على حروف متعددة البايتات، فستعيد <code>gets(1)‎</code> الحرف بالكامل.
 
 
إن كان الوسيط الأول عددًا صحيحًا أو إن أعطي الوسيط الاختياري الثاني، فلن تكون [[Ruby/String|السلسلة النصية]] المعادة أطول من القيمة المحددة من حيث عدد البايتات.<syntaxhighlight lang="ruby">File.new("testfile").gets  #=> "This is line one\n"
 
$_                          #=> "This is line one\n"
 
File.new("testfile").gets(4)#=> "This"‎</syntaxhighlight>إن كان [[Ruby/IO|مجرى د/خ]] يحتوي على حروف متعددة البايتات، فستعيد <code>gets(1)‎</code> الحرف بالكامل.
 
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">gets(sep=$/ [, getline_args])  → string or nil
 
<syntaxhighlight lang="ruby">gets(sep=$/ [, getline_args])  → string or nil
سطر 18: سطر 14:
 
==المعاملات==
 
==المعاملات==
 
===<code>sep‎</code>===
 
===<code>sep‎</code>===
فاصل
+
المحرف الفاصل بين الأسطر. القيمة الافتراضية هي: <code>/$</code>. إن كانت قيمته <code>nil</code>، فستُقرَأ آنذاك جميع محتويات المجرى (أي سيمثِّل نهاية المجرى).
 
===<code>limit‎</code>===
 
===<code>limit‎</code>===
عدد صحيح يمثل الحد الأٌقصى لعدد البايتات المقروءة.
+
عدد صحيح يمثل الحد الأٌقصى لعدد البايتات المراد قراءتها. إن كانت قيمته 0، فستُقرَأ فقرة في كل مرة من المجرى (تُفصل الفقرات بسطرين منفصلين).
==القيمة المُعادة==
+
 
سيُعاد السطر المقروء، أو ستعاد القيمة <code>nil</code> إن استُدعي التابع <code>gets</code> عند نهاية الملف.   
+
=== <code>getline_args</code> ===
 +
راجع صفحة <code>[[Ruby/IO/readlines|readlines]]</code> لمزيد من التفاصيل حول هذا المعامل.
 +
 
 +
==القيمة المعادة==
 +
ستعاد سلسلة نصية تمثِّل السطر المقروء من المجرى المعطى وستُسنَد قيمتها إلى المتغير ‎<code>$_‎</code>، أو ستعاد القيمة <code>nil</code> عند الوصول إلى نهاية الملف.   
  
 
==أمثلة==
 
==أمثلة==
مثال على استخدام التابع <code>gets‎</code>:
+
مثال على استخدام التابع <code>gets‎</code>:<syntaxhighlight lang="ruby">File.new("testfile").gets  #=> "This is line one\n"
<syntaxhighlight lang="ruby"># الحروف الروسية تأخذ بتتين
+
$_                          #=> "This is line one\n"
 +
File.new("testfile").gets(4)#=> "This"‎</syntaxhighlight>مثال على استعمال التابع <code>gets‎</code> مع لغة يأخذ المحرف فيها بايتين:
 +
<syntaxhighlight lang="ruby"># الحروف الروسية تأخذ بايتين
 
File.write("testfile", "\u{442 435 441 442}")
 
File.write("testfile", "\u{442 435 441 442}")
 
File.open("testfile") {|f|f.gets(1)} #=> "\u0442"
 
File.open("testfile") {|f|f.gets(1)} #=> "\u0442"
سطر 33: سطر 35:
 
File.open("testfile") {|f|f.gets(4)} #=> "\u0442\u0435"
 
File.open("testfile") {|f|f.gets(4)} #=> "\u0442\u0435"
 
</syntaxhighlight>
 
</syntaxhighlight>
==انظر أيضا==
+
==انظر أيضًا==
* التابع <code>[[Ruby/IO/getc|getc]]</code>: يقرأ  [[Ruby/String|سلسلة نصية]] مُؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]]
+
* التابع <code>[[Ruby/IO/getbyte|getbyte]]</code>: يجلب البايت التالي من [[Ruby/IO|المجرى]] الذي استدعي معه.
* التابع <code>[[Ruby/IO/inspect|inspect]]</code>: يُعيد [[Ruby/String|سلسلة نصية]] تصف [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه.
+
* التابع <code>[[Ruby/IO/getc|getc]]</code>: يجلب محرفًا واحدًا من [[Ruby/IO|المجرى]] الذي استدعي معه.
 +
* التابع <code>[[Ruby/IO/inspect|inspect]]</code>: يُعيد [[Ruby/String|سلسلة نصية]] تصف [[Ruby/IO|المجرى]] الذي استُدعي معه.
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/IO.html#method-i-gets قسم التابع gets‎ في الصنف IO‎ في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/IO.html#method-i-gets قسم التابع gets‎ في الصنف IO‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 11:46، 22 ديسمبر 2018

يجلب التابع gets السطر التالي من المجرى الذي استدعي معه.

يجب أن يكون المجرى مفتوحًا في وضعية القراءة وإلا سيُطلَق الاستثناء IOError.

إن كان المجرى يحتوي على حروف متعددة البايتات، فستعيد gets(1)‎ الحرف بالكامل.

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

gets(sep=$/ [, getline_args])   string or nil
gets(limit [, getline_args]) string or nil
gets(sep, limit [, getline_args])  string or nil

المعاملات

sep‎

المحرف الفاصل بين الأسطر. القيمة الافتراضية هي: /$. إن كانت قيمته nil، فستُقرَأ آنذاك جميع محتويات المجرى (أي سيمثِّل نهاية المجرى).

limit‎

عدد صحيح يمثل الحد الأٌقصى لعدد البايتات المراد قراءتها. إن كانت قيمته 0، فستُقرَأ فقرة في كل مرة من المجرى (تُفصل الفقرات بسطرين منفصلين).

getline_args

راجع صفحة readlines لمزيد من التفاصيل حول هذا المعامل.

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

ستعاد سلسلة نصية تمثِّل السطر المقروء من المجرى المعطى وستُسنَد قيمتها إلى المتغير ‎$_‎، أو ستعاد القيمة nil عند الوصول إلى نهاية الملف.

أمثلة

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

File.new("testfile").gets   #=> "This is line one\n"
$_                          #=> "This is line one\n"
File.new("testfile").gets(4)#=> "This"‎

مثال على استعمال التابع gets‎ مع لغة يأخذ المحرف فيها بايتين:

# الحروف الروسية تأخذ بايتين
File.write("testfile", "\u{442 435 441 442}")
File.open("testfile") {|f|f.gets(1)} #=> "\u0442"
File.open("testfile") {|f|f.gets(2)} #=> "\u0442"
File.open("testfile") {|f|f.gets(3)} #=> "\u0442\u0435"
File.open("testfile") {|f|f.gets(4)} #=> "\u0442\u0435"

انظر أيضًا

مصادر