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

من موسوعة حسوب
< Ruby‏ | Dir
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:  التابع <code>each_child</code> الخاص بالصنف <code>Dir</code> في روبي}}</noinclude> تصنيف: Ruby تصني...')
 
ط
 
(4 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:  التابع <code>each_child</code> الخاص بالصنف <code>Dir</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE:  التابع <code>Dir.each_child</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Dir]]
 
[[تصنيف: Ruby Dir]]
يستبدل التابع <code>chdir‎</code> مجلد العمل (working directory) الحالي للعملية ويعيّن مكانه السلسلة النصية المعطاة. عند استدعائه بدون تمرير وسيط، فسيغير مجلدَ العمل إلى قيمة متغير البيئة <code>HOME</code>  أو <code>LOGDIR.SystemCallError</code> (وربما <code>Errno::ENOENT</code>) إذا كان المجلد المُستهدف غير موجود.  
+
يستدعي التابع <code>each_child</code> الكتلة المعطاة على كل ملف أو مجلد موجود في المجلد المحدد باستثناء "<code>..</code>" و "<code>.</code>" إذ يمُمرّر أسماء تلك الملفات كوسائط إلى الكتلة.  
  
في حال إعطاء كتلة برمجية، فسيُمرّر اسم المجلد الحالي الجديد، وستنفّذ الكتلة على اعتباره المجلد الحالي. سيُستعاد مجلد العمل الأصلي عند الخروج من الكتلة. وتكون القيمة المعادة للتابع <code>chdir</code> مساوية لقيمة الكتلة.
+
في حال عدم تمرير أي كتلة، يعاد كائنٌ من النوع [[Ruby/Enumerator|<code>enumerator</code>]].
 
+
==البنية العامة==
يمكن أن تتشعّب كتل <code>chdir</code>، ولكن في البرامج المتفرّعة (Multi-threaded) سيُطلق خطأ إذا حاول أحد المهام الفرعية (thread)  فتح كتلة <code>chdir</code> بينما نقوم مهمة فرعية أخرى بفتح آخر.
 
 
 
== البنية العامة ==
 
 
<syntaxhighlight lang="ruby">
 
<syntaxhighlight lang="ruby">
chdir( [ string] ) → 0
+
each_child( dirname ) {| filename | block } nil click to toggle source
chdir( [ string] ) {| path | block } → anObject
+
each_child( dirname, encoding: enc ) {| filename | block } → nil
 +
each_child( dirname ) → an_enumerator
 +
each_child( dirname, encoding: enc ) → an_enumerator
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
==المعاملات==
 +
===<code>dirname</code>===
 +
اسم المجلد المراد تنفيذ كتلة معيَّنة على كل محتوياته.
 +
===<code>encoding</code>===
 +
ترميز المجلد.
 +
==القيمة المعادة==
 +
في حال أعطيت الكتلة <code>block</code>، فستُعاد القيمة <code>nil</code> بعد تنفيذ الكتلة على كل عنصر من عناصر المجلد الموجودة ضمنه وإلا فسيُعاد كائن من النوع [[Ruby/Enumerator|<code>enumerator</code>]].
 +
==أمثلة==
 +
مثال عن استخدام التابع <code>each_child</code> على المجلد <code>testdir</code> الذي يحوي ملفين عاديين (<code>config.h</code> و <code>main.rb</code>)، والمجلد الأب (<code>..</code>) ، والمجلد نفسه (<code>.</code>):<syntaxhighlight lang="ruby">
 +
Dir.each_child("testdir") {|x| puts "Got #{x}" }
  
== المعاملات ==
+
</syntaxhighlight>سينتج بعد تنفيذه:<syntaxhighlight lang="ruby">
 
+
Got config.h
=== <code>string</code> ===
+
Got main.rb
يحتوي هذا المعامل عنوان مجلد العمل الجديد.
 
 
 
== القيمة المٌعادة ==
 
في حال تمرير كتلة فالقيمة المعادة للتابع <code>chdir</code> ستساوي قيمة تلك الكتلة.
 
 
 
== أمثلة ==
 
أمثلة عن استخدام التابع <code>chdir‎</code>:<syntaxhighlight lang="ruby">
 
Dir.chdir("/var/spool/mail")
 
puts Dir.pwd
 
Dir.chdir("/tmp") do
 
  puts Dir.pwd
 
  Dir.chdir("/usr") do
 
    puts Dir.pwd
 
  end
 
  puts Dir.pwd
 
end
 
puts Dir.pwd
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
==انظر أيضًا==
== أنظر أيضًا ==
+
*التابع <code>[[Ruby/Dir/each|each]]</code>: يستدعي الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد. حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة.
* صفحة الصنف <code>[[Ruby/Dir|Dir]]</code>.
+
*التابع <code>[[Ruby/Dir/foreach|foreach]]</code>: يستدعي الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد باستثناء "<code>..</code>" و "<code>.</code>". حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة
* التابع <code>[[Ruby/Dir/5B-5D|Dir[]]]</code> : يكافئ التابع <code>Dir[]‎</code> استدعاء <code>Dir.glob([string,...], 0)</code>
+
==مصادر==
 
+
*[http://ruby-doc.org/core-2.5.1/Dir.html#method-c-each_child قسم التابع each_child في الصنف Dir في توثيق روبي الرسمي.]
== مصادر ==
 
* [http://ruby-doc.org/core-2.5.1/Dir.html#method-c-chdir قسم  التابع chdir في الصنف Dir في توثيق روبي الرسمي.]
 

المراجعة الحالية بتاريخ 22:33، 10 نوفمبر 2018

يستدعي التابع each_child الكتلة المعطاة على كل ملف أو مجلد موجود في المجلد المحدد باستثناء ".." و "." إذ يمُمرّر أسماء تلك الملفات كوسائط إلى الكتلة.

في حال عدم تمرير أي كتلة، يعاد كائنٌ من النوع enumerator.

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

each_child( dirname ) {| filename | block }  nil click to toggle source
each_child( dirname, encoding: enc ) {| filename | block }  nil
each_child( dirname )  an_enumerator
each_child( dirname, encoding: enc )  an_enumerator

المعاملات

dirname

اسم المجلد المراد تنفيذ كتلة معيَّنة على كل محتوياته.

encoding

ترميز المجلد.

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

في حال أعطيت الكتلة block، فستُعاد القيمة nil بعد تنفيذ الكتلة على كل عنصر من عناصر المجلد الموجودة ضمنه وإلا فسيُعاد كائن من النوع enumerator.

أمثلة

مثال عن استخدام التابع each_child على المجلد testdir الذي يحوي ملفين عاديين (config.h و main.rb)، والمجلد الأب (..) ، والمجلد نفسه (.):

Dir.each_child("testdir") {|x| puts "Got #{x}" }

سينتج بعد تنفيذه:

Got config.h
Got main.rb

انظر أيضًا

  • التابع each: يستدعي الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد. حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة.
  • التابع foreach: يستدعي الكتلة المعطاة على كل ملف من الملفات المحتواة في المجلد المحدد باستثناء ".." و ".". حيث يمُمرّر أسماء تلك الملفات كوسائط للكتلة. 

مصادر