Rubif __name__ == '__main __' Rub রুবির সমতুল্য


103

আমি রুবি নতুন। আমি একটি মডিউল থেকে ফাংশন আমদানি করতে চাই যা একটি সরঞ্জাম রয়েছে যা আমি পৃথকভাবে ব্যবহার চালিয়ে যেতে চাই। পাইথনে আমি কেবল এটি করতাম:

def a():
    ...
def b():
    ...
if __name__ == '__main__':
    a()
    b()

এটি আমাকে প্রোগ্রাম চালাতে বা এটি মডিউল হিসাবে a()এবং / অথবা b()পৃথকভাবে আমদানি করার অনুমতি দেয় । রুবির সমতুল্য দৃষ্টান্ত কী?



উত্তর:


134

রুবি থেকে আমি বুনোতে দেখেছি (মঞ্জুর, এক টন নয়), এটি কোনও মানক রুবি ডিজাইনের ধরণ নয়। মডিউল এবং স্ক্রিপ্টগুলি আলাদা থাকার কথা, তাই যদি সত্যিই এটি করার কোনও ভাল, পরিষ্কার উপায় না থাকে তবে আমি অবাক হব না।

সম্পাদনা: এটি পাওয়া গেছে।

if __FILE__ == $0
    foo()
    bar()
end

তবে এটি অবশ্যই সাধারণ নয়।


4
কৌতূহলের বাইরে মডিউল এবং স্ক্রিপ্টগুলি আলাদা রাখার পিছনে যুক্তি কী?
চিত্রশিল্পী

5
আমি মনে করি এটি কেবল রুবিবাদীরা করতে পছন্দ করেন। একটি মডিউল সংজ্ঞা একটি মডিউল সংজ্ঞা। আপনি যদি সেই মডিউলটি দিয়ে কিছু পদক্ষেপ নিতে চান তবে ভাল, তবে আপনি যে পদক্ষেপ নিচ্ছেন সেটি কোনও মডিউল সংজ্ঞা নয়।
ম্যাচু

8
জিনিসগুলির পরীক্ষার জন্য এটি সুবিধাজনক - আপনি সেখানে মডিউল পরীক্ষা রাখতে পারেন এবং কোনও মোড়ক ছাড়াই মডিউল ফাইল থেকে চালাতে পারেন run
ইবনেটার

4
@ ইমাজিস্ট এবং @ ইবনেটার বা অন্য উপায়ে: স্ক্রিপ্টটি একটি একক মডিউল যা কমান্ডলাইন থেকে চালানোর উদ্দেশ্যে করা হয়েছে তবে আপনি এটি পৃথক অংশে পরীক্ষা করতে এবং পৃথক মডিউলটিতে পরীক্ষা করতে সক্ষম হতেও চান। সেক্ষেত্রে, NAME এর == $ 0 অমূল্য।
বিভ্রান্তি

16
আমি এটিও দেখিনি, তবে এটি ভ্রূকুচি নয়। সরকারী রুবি ডকস এটি ব্যবহার করে: রুবি-lang.org/en/docamentation/quickstart/4
cflewis

12

যদি স্ট্যাক ট্রেস খালি থাকে তবে আমরা ডান এবং বামে চালানো শুরু করতে পারি। আমি জানতে পারি না যে এটি প্রায় এক সপ্তাহের জন্য আমি রুবিতে আছি বলে প্রচলিত বা অপ্রচলিতভাবে ব্যবহার হয়েছিল কিনা।

if caller.length == 0
  # do stuff
end

ধারণার প্রমাণ:

ফাইল: test.rb

#!/usr/bin/ruby                                                                 

if caller.length == 0
  puts "Main script"
end

puts "Test"

ফাইল: shmest.rb

#!/usr/bin/ruby -I .                                                            

require 'test.rb'

puts "Shmest"

ব্যবহার:

$ ./shmest.rb 
Test
Shmest

$ ./test.rb
Main script
Test

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.