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

من موسوعة حسوب
< Ruby‏ | Dir
لا ملخص تعديل
ط مراجعة وتدقيق
 
(3 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 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>chdir‎</code> مجلد العمل (working directory) الحالي للعملية ويعيّن مكانه السلسلة النصية المعطاة. عند استدعائه بدون تمرير وسيط، فسيغير مجلدَ العمل إلى قيمة متغير البيئة <code>HOME</code> أو <code>LOGDIR.SystemCallError</code> (وربما <code>Errno::ENOENT</code>) إذا كان المجلد المُستهدف غير موجود.  
يغيِّر التابع <code>chdir‎</code> مجلد العمل (working directory) الحالي للعملية الحالية إلى مجلَّدٍ محدَّدٍ. عند استدعائه بدون تمرير وسيط، فسيغيِّر مجلد العمل إلى قيمة متغير البيئة <code>HOME</code> أو <code>LOGDIR.SystemCallError</code> (وربما <code>Errno::ENOENT</code>) إذا كان المجلد المُستهدَف غير موجود.  


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


يمكن أن تتشعّب كتل <code>chdir</code>، ولكن في البرامج المتفرّعة (Multi-threaded) سيُطلق خطأ إذا حاول أحد المهام الفرعية (thread) فتح كتلة <code>chdir</code> بينما نقوم مهمة فرعية أخرى بفتح آخر.
يمكن أن تتشعّب الكتل <code>chdir</code>، ولكن سيُطلَق خطأٌ في البرامج ذات الخيوط المتعددة (Multi-threaded) إذا حاول أحد المهام الفرعية (thread) فتح الكتلة <code>chdir</code> بينما تعمل مهمة فرعية أخرى على فتح آخر.
 
==البنية العامة==
== البنية العامة ==
<syntaxhighlight lang="ruby">
<syntaxhighlight lang="ruby">
chdir( [ string] ) → 0
chdir( [ string] ) → 0
chdir( [ string] ) {| path | block } → anObject
chdir( [ string] ) {| path | block } → anObject
</syntaxhighlight>
</syntaxhighlight>
 
==المعاملات==
== المعاملات ==
===<code>string</code>===
 
=== <code>string</code> ===
يحتوي هذا المعامل عنوان مجلد العمل الجديد.
يحتوي هذا المعامل عنوان مجلد العمل الجديد.
 
==القيمة المعادة==
== القيمة المٌعادة ==
في حال تمرير كتلة، فسيُعاد ناتج تنفيذ هذه الكتلة بعد تمرير مجلد العمل الجديد.
في حال تمرير كتلة فالقيمة المعادة للتابع <code>chdir</code> ستساوي قيمة تلك الكتلة.
==أمثلة==
 
مثال عن استخدام التابع <code>chdir</code> على المجلد <code>testdir</code> الذي يحوي ملفين عاديين (<code>config.h</code> و <code>main.rb</code>)، والمجلد الأب (<code>..</code>)، والمجلد نفسه (<code>.</code>).<syntaxhighlight lang="ruby">
== أمثلة ==
أمثلة عن استخدام التابع <code>chdir‎</code>:<syntaxhighlight lang="ruby">
Dir.chdir("/var/spool/mail")
Dir.chdir("/var/spool/mail")
puts Dir.pwd
puts Dir.pwd
سطر 35: سطر 30:
end
end
puts Dir.pwd
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) الحالي للعملية على شكل سلسلة نصية
* التابع <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-chdir قسم التابع chdir في الصنف Dir في توثيق روبي الرسمي.]
== مصادر ==
* [http://ruby-doc.org/core-2.5.1/Dir.html#method-c-chdir قسم التابع chdir في الصنف Dir في توثيق روبي الرسمي.]

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

مصادر