Starlark-এ বিবৃতি অন্তর্ভুক্ত এবং উত্তরাধিকারসূত্রে প্রাপ্ত করুন

তৈরিতে, একটি include বিবৃতিতে ভেরিয়েবল সহ ফাইল পাথ অন্তর্ভুক্ত থাকতে পারে এবং একটি বিয়োগ সহ উপসর্গ থাকলে অস্তিত্বহীন ফাইলগুলিকে উপেক্ষা করবে। পণ্য কনফিগারেশনের সমতুল্য হল inherit-product-if-exists ফাংশন। স্টারলার্ক স্ট্রিং লিটারাল দ্বারা চিহ্নিত ফাইলগুলির সাথে load স্টেটমেন্ট ব্যবহার করে এবং যদি একটি ফাইল বিদ্যমান না থাকে, স্টারলার্ক একটি ত্রুটি ছুড়ে দেয়।

এই সীমাবদ্ধতার কাছাকাছি কাজ করতে, Starlark রূপান্তরকারী:

  • সমস্ত মেকফাইল খুঁজে পায় যা ভেরিয়েবল জড়িত পথের সাথে মেলে
  • তাদের সকলের জন্য স্টারলার্ক load স্টেটমেন্ট নির্গত করে
  • রানটাইমে সঠিকটি বেছে নেয়

মনে রাখবেন যে জেনারেট করা স্টারলার্ক কোডটি অপ্রাকৃতিক মনে হতে পারে কারণ এটি সমস্ত মিলে যাওয়া পাথগুলিকে তালিকাভুক্ত করে যদিও শুধুমাত্র একটি কার্যকর করা হবে।

আমরা include / inherit-product স্টেটমেন্টে পরিবর্তনশীল রেফারেন্সগুলি সরানোর পরামর্শ দিই।

যখন পরিবর্তনশীল রেফারেন্স এড়ানো যায় না, পরিবর্তনশীল অংশটি ছোট করার চেষ্টা করুন। উদাহরণ স্বরূপ:

MY_DIR := path/to/$(TARGET_PRODUCT)
include $(MY_DIR)/file.mk

কনভার্টার সোর্স ট্রিতে প্রতিটি file.mk এর জন্য একটি load স্টেটমেন্ট তৈরি করে

include path/to/$(TARGET_PRODUCT)/file.mk

এটিকে path/to অধীনে file.mk ফাইলগুলিতে সীমাবদ্ধ করে। অবশ্যই, TARGET_PRODUCT এর ব্যবহার অপসারণ করাও আদর্শ হবে৷