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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Dir</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Dir تُولّد الكائنات...')
 
سطر 2: سطر 2:
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby Dir]]
 
[[تصنيف: Ruby Dir]]
تُولّد الكائنات من الصنف<code>Continuation</code> بواسطة التابع <code>Kernel#callcc</code>، بعد استيراد "<code>continuation</code>". يُعدّ التابع عنوان إعادة (return address)  وسياق تنفيذ (execution context)، مما يتيح إعادة غير محلية (nonlocal return) في نهاية الكتلة <code>callcc</code> من أي مكان في البرنامج.
+
كائنات الصنف<code>Dir</code> هي مجريات مجلدات (directory streams) في نظام الملفات الأساسي. فهي توفر مجموعة متنوعة من الطرق لعرض المجلدات ومحتوياتها. انظر أيضًا صفحة [[Ruby/File|File]].  
  
كائنات الصنف<code>Continuation</code> هي أقرب إلى نسخة من <code>setjmp/longjmp</code> في لغة C (على الرغم من أنها تحتوي على حالات أكثر، لذلك فيمكن اعتبارها أقرب إلى المهام الفرعية [threads])>.
+
يحتوي المجلد المستخدم في الأمثلة الموجودة في صفحات التوابع ملفين عاديين (<code>config.h</code> و <code>main.rb</code>) ، والمجلد الأب (<code>..</code>) ، والمجلد نفسه (<code>.</code>).
 
 
على سبيل المثال:<syntaxhighlight lang="ruby">
 
require "continuation"
 
arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ]
 
callcc{|cc| $cc = cc}
 
puts(message = arr.shift)
 
$cc.call unless message =~ /Max/
 
</syntaxhighlight>ستنتج:<syntaxhighlight lang="ruby">
 
Freddie
 
Herbie
 
Ron
 
Max
 
</syntaxhighlight>ويمكن أيضًا استدعاء <code>callcc</code> في توابع أخرى:<syntaxhighlight lang="ruby">
 
require "continuation"
 
 
 
def g
 
  arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ]
 
  cc = callcc { |cc| cc }
 
  puts arr.shift
 
  return cc, arr.size
 
end
 
 
 
def f
 
  c, size = g
 
  c.call(c) if size > 1
 
end
 
 
 
f
 
 
 
</syntaxhighlight>يسمح هذا المثال للحلقة الداخلية بالخروج مبكرًا:<syntaxhighlight lang="ruby">
 
require "continuation"
 
callcc {|cont|
 
  for i in 0..4
 
    print "\n#{i}: "
 
    for j in i*5...(i+1)*5
 
      cont.call() if j == 17
 
      printf "%3d", j
 
    end
 
  end
 
}
 
puts
 
 
 
</syntaxhighlight>ستنتج:<syntaxhighlight lang="ruby">
 
0:  0  1  2  3  4
 
1:  5  6  7  8  9
 
2:  10 11 12 13 14
 
3:  15 16
 
</syntaxhighlight>
 
 
==توابع الصنف العامة (Public Class Methods)==
 
==توابع الصنف العامة (Public Class Methods)==
 
===[[Ruby/Continuation/cont|التابع <code>cont</code>]]===
 
===[[Ruby/Continuation/cont|التابع <code>cont</code>]]===
يقوم التابع <code>cont</code> باستدعاء <code>continuation</code>. ويستمر البرنامج من نهاية كتلة <code>callcc</code>.
+
 
 
===[[Ruby/Continuation/call|التابع <code>call</code>]]===
 
===[[Ruby/Continuation/call|التابع <code>call</code>]]===
يقوم التابع <code>call</code> باستدعاء <code>continuation</code>. ويستمر البرنامج من نهاية كتلة <code>callcc</code>.  
+
 
 
==مصادر<span> </span>==
 
==مصادر<span> </span>==
*[http://ruby-doc.org/core-2.5.1/Continuation.html قسم  الصنف Continuation في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/Dir.html قسم  الصنف Dir في توثيق روبي الرسمي.]

مراجعة 09:12، 18 سبتمبر 2018

كائنات الصنفDir هي مجريات مجلدات (directory streams) في نظام الملفات الأساسي. فهي توفر مجموعة متنوعة من الطرق لعرض المجلدات ومحتوياتها. انظر أيضًا صفحة File.

يحتوي المجلد المستخدم في الأمثلة الموجودة في صفحات التوابع ملفين عاديين (config.h و main.rb) ، والمجلد الأب (..) ، والمجلد نفسه (.).

توابع الصنف العامة (Public Class Methods)

التابع cont

التابع call

مصادر