التابع Dir.chdir في روبي

من موسوعة حسوب
< Ruby‏ | Dir
اذهب إلى التنقل اذهب إلى البحث

يغيِّر التابع 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) الحالي للعملية على شكل سلسلة نصية. 

مصادر