কম্পিউটার

কিভাবে ARGV রুবিতে সেট করা হয়?

আপনি হয়তো জানেন যে রুবি ARGV নামক একটি গ্লোবাল অ্যারেতে কমান্ড-লাইন আর্গুমেন্ট আটকে রাখে। কিন্তু কেন হেক এটা ARGV বলা হয়? এটি একটি আকর্ষণীয় ইতিহাস পাঠ যা C.

এ রুবির উৎপত্তিকে হাইলাইট করে

আর্গুমেন্ট ভেক্টর

ARGV মানে আর্গুমেন্ট ভেক্টর। এবং এই অদ্ভুত পুরানো সময়ের ব্যবহারে "ভেক্টর" মানে "একটি এক-মাত্রিক অ্যারে।"

C-তে, প্রতিটি প্রোগ্রামে একটি main() থাকে ফাংশন এটি সাধারণত এরকম কিছু দেখায়:

int main(int argc, char *argv[]) {  
  ... your code here
}

আপনি সম্ভবত লক্ষ্য করেছেন, প্রধান ফাংশন দুটি আর্গুমেন্ট আছে. এগুলি যথাক্রমে, একটি গণনা এবং কমান্ড-লাইন আর্গুমেন্টের একটি অ্যারে।

আপনি যখন ব্যাশকে আপনার প্রোগ্রাম চালাতে বলেন, তখন এটি একটি সিস্টেম কল করে যার ফলে OS আপনার প্রোগ্রামের main কল করে ফাংশন এবং নির্দিষ্ট argc এ পাস করতে এবং argv মান

রুবি

রুবি দোভাষী - এমআরআই অন্তত - একটি সি প্রোগ্রাম। এখানে রুবির main ফাংশন:

int
main(int argc, char **argv)
{
#ifdef RUBY_DEBUG_ENV
    ruby_set_debug_option(getenv("RUBY_DEBUG"));
#endif
#ifdef HAVE_LOCALE_H
    setlocale(LC_CTYPE, "");
#endif

    ruby_sysinit(&argc, &argv);
    {
    RUBY_INIT_STACK;
    ruby_init();
    return ruby_run_node(ruby_options(argc, argv));
    }
}

আপনি দেখতে পাচ্ছেন, এটি argc পাস করে এবং argv ruby_options নামক একটি ফাংশনে , যা ঘুরে কল করে ruby_process_options , যা process_options কল করে .

এটি রুবি ইন্টারপ্রেটারের সমস্ত বিকল্প পরিচালনা করে এবং অবশেষে ruby_set_argv কল করে , যা ARGV সেট করে আপনি আপনার রুবি কোড দেখতে.

void
ruby_set_argv(int argc, char **argv)
{
    int i;
    VALUE av = rb_argv;

#if defined(USE_DLN_A_OUT)
    if (origarg.argv)
    dln_argv0 = origarg.argv[0];
    else
    dln_argv0 = argv[0];
#endif
    rb_ary_clear(av);
    for (i = 0; i < argc; i++) {
    VALUE arg = external_str_new_cstr(argv[i]);

    OBJ_FREEZE(arg);
    rb_ary_push(av, arg);
    }
}

বেশ ঝরঝরে. আমি এমআরআই কোডবেসে ডাইভিং করার জন্য এখনও সত্যিই নতুন, কিন্তু ঝাঁপিয়ে পড়া এবং জিনিসগুলি কীভাবে কাজ করে তা দেখতে এক ধরণের মজা।


  1. রুবি দিয়ে কীভাবে কমান্ড-লাইন অ্যাপ্লিকেশন (সিএলআই) তৈরি করবেন

  2. রুবি 2.6-এ MJIT কী এবং এটি কীভাবে কাজ করে?

  3. রুবিতে স্ট্রাকট এবং ওপেনস্ট্রাক্ট কীভাবে ব্যবহার করবেন

  4. Redis SMEMBERS - কিভাবে রেডিসে একটি সেটের সমস্ত উপাদান পেতে হয়