الفرق بين المراجعتين لصفحة: «Ruby/Dir/chdir»

من موسوعة حسوب
< Ruby‏ | Dir
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:  التابع <code>chdir</code> الخاص بالصنف <code>Dir</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ru...'
 
ط مراجعة وتدقيق
 
(4 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:  التابع <code>chdir</code> الخاص بالصنف <code>Dir</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE:  التابع <code>Dir.chdir</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Dir]]
[[تصنيف: Ruby Dir]]
يكافئ التابع <code>Dir[]‎</code> استدعاء <code>Dir.glob([string,...], 0)</code>.  
يغيِّر التابع <code>chdir‎</code> مجلد العمل (working directory) الحالي للعملية الحالية إلى مجلَّدٍ محدَّدٍ. عند استدعائه بدون تمرير وسيط، فسيغيِّر مجلد العمل إلى قيمة متغير البيئة <code>HOME</code> أو <code>LOGDIR.SystemCallError</code> (وربما <code>Errno::ENOENT</code>) إذا كان المجلد المُستهدَف غير موجود.  


== البنية العامة ==
في حال تمرير كتلة برمجية إلى التابع، فسيُمرّر إليها اسم المجلد الحالي الجديد، وستنفّذ الكتلة على اعتباره المجلد الحالي. بعد تنفيذ الكتلة والخروج منها، سيُستعَاد مجلد العمل الأصلي آنذاك. وتكون القيمة المعادة للتابع <code>chdir</code> مساويةً لقيمة الكتلة.
 
يمكن أن تتشعّب الكتل <code>chdir</code>، ولكن سيُطلَق خطأٌ في البرامج ذات الخيوط المتعددة (Multi-threaded) إذا حاول أحد المهام الفرعية (thread) فتح الكتلة <code>chdir</code> بينما تعمل مهمة فرعية أخرى على فتح آخر.
==البنية العامة==
<syntaxhighlight lang="ruby">
<syntaxhighlight lang="ruby">
Dir[ string [, string ...] [, base: path] ] array
chdir( [ string] ) → 0
chdir( [ string] ) {| path | block } anObject
</syntaxhighlight>
</syntaxhighlight>
 
==المعاملات==
== القيمة المٌعادة ==
===<code>string</code>===
يعيد  التابع <code>Dir[]‎</code> مصفوفة تضم النتائج.
يحتوي هذا المعامل عنوان مجلد العمل الجديد.
 
==القيمة المعادة==
== أمثلة ==
في حال تمرير كتلة، فسيُعاد ناتج تنفيذ هذه الكتلة بعد تمرير مجلد العمل الجديد.
أمثلة عن استخدام التابع <code>Dir[]‎</code>:<syntaxhighlight lang="ruby">
==أمثلة==
Dir["config.?"]                    #=> ["config.h"]
مثال عن استخدام التابع <code>chdir</code> على المجلد <code>testdir</code> الذي يحوي ملفين عاديين (<code>config.h</code> و <code>main.rb</code>)، والمجلد الأب (<code>..</code>)، والمجلد نفسه (<code>.</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 lang="text">
/var/spool/mail
/tmp
/usr
/tmp
/var/spool/mail
</syntaxhighlight>
</syntaxhighlight>


== أنظر أيضًا ==
==انظر أيضًا==
* صفحة الصنف <code>[[Ruby/Dir|Dir]]</code>.
*التابع <code>[[Ruby/Dir/getwd|getwd]]</code>: يعيد مسار مجلد العمل (working directory) الحالي للعملية على شكل سلسلة نصية. 
 
==مصادر==
== مصادر ==
*[http://ruby-doc.org/core-2.5.1/Dir.html#method-c-chdir قسم التابع chdir في الصنف Dir في توثيق روبي الرسمي.]
* [http://ruby-doc.org/core-2.5.1/Dir.html#method-c-5B-5D <nowiki>قسم التابع [] في الصنف Dir في توثيق روبي الرسمي.</nowiki>]

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

يغيِّر التابع chdir‎ مجلد العمل (working directory) الحالي للعملية الحالية إلى مجلَّدٍ محدَّدٍ. عند استدعائه بدون تمرير وسيط، فسيغيِّر مجلد العمل إلى قيمة متغير البيئة HOME أو LOGDIR.SystemCallError (وربما Errno::ENOENT) إذا كان المجلد المُستهدَف غير موجود.

في حال تمرير كتلة برمجية إلى التابع، فسيُمرّر إليها اسم المجلد الحالي الجديد، وستنفّذ الكتلة على اعتباره المجلد الحالي. بعد تنفيذ الكتلة والخروج منها، سيُستعَاد مجلد العمل الأصلي آنذاك. وتكون القيمة المعادة للتابع chdir مساويةً لقيمة الكتلة.

يمكن أن تتشعّب الكتل chdir، ولكن سيُطلَق خطأٌ في البرامج ذات الخيوط المتعددة (Multi-threaded) إذا حاول أحد المهام الفرعية (thread) فتح الكتلة chdir بينما تعمل مهمة فرعية أخرى على فتح آخر.

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

chdir( [ string] )  0
chdir( [ string] ) {| path | block }  anObject

المعاملات

string

يحتوي هذا المعامل عنوان مجلد العمل الجديد.

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

في حال تمرير كتلة، فسيُعاد ناتج تنفيذ هذه الكتلة بعد تمرير مجلد العمل الجديد.

أمثلة

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

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

سينتج عن تنفيذ هذه الشيفرة الناتج التالي:

/var/spool/mail
/tmp
/usr
/tmp
/var/spool/mail

انظر أيضًا

  • التابع getwd: يعيد مسار مجلد العمل (working directory) الحالي للعملية على شكل سلسلة نصية. 

مصادر