কেন - (3 ড্যাশ / হাইফেন) ইয়ামল ফাইলে?


116

সুতরাং আমি কেবল YAMLফাইলটি ব্যবহার করা শুরু করেছি application.propertiesকারণ এটি আরও পাঠযোগ্য। আমি YAMLতাদের দিয়ে শুরু ফাইলগুলিতে দেখতে পাচ্ছি ---। আমি গুগল করে নীচের ব্যাখ্যাটি পেয়েছি।

ওয়াইএএমএল ডকুমেন্টের সামগ্রী থেকে পৃথক দিকনির্দেশের জন্য তিনটি ড্যাশ ("---") ব্যবহার করে। কোনও নির্দেশনা উপস্থিত না থাকলে এটি কোনও নথির শুরুতে সংকেতও সরবরাহ করে।

এছাড়াও, আমি ছাড়াই একটি নমুনা চেষ্টা করেছি ---এবং বুঝতে পেরেছি যে এটি থাকা বাধ্যতামূলক নয়।

আমি এক স্পষ্ট বোধগম্যতা হবে না directiveএবং document। কেউ দয়া করে একটি সাধারণ উদাহরণ দিয়ে ব্যাখ্যা করতে পারেন?


3
আপনি কি YAML স্পেসিফিকেশন পরীক্ষা করেছেন? এটি নির্দেশনা বা নথি কী তা বর্ণনা করে । দুঃখিত, এটি আমার বইয়ের idownvatedbecau.se/noresearch এর জন্য যোগ্যতা অর্জন করেছে ।
অভিধান 21

19
@ অ্যালেক্সিকোর আমি উদাহরণ দেওয়ার আগে ডক্স পরীক্ষা করেছি। তবে আমি একটি পরিষ্কার বোঝাপড়া পাইনি এবং আমি ভেবেছিলাম কেউ ব্যাখ্যা করলে আমি আরও ভাল বুঝতে পারব। আমি দুঃখিত যদি এটি খুব প্রাথমিক মনে হয় তবে এফওয়াইআই আমি কেবল একজন শিক্ষানবিস।
অ্যান্ডি

উত্তর:


66

আপনি ইতিমধ্যে খুঁজে পেয়েছেন যে, তিনটি ড্যাশ নথির শুরুতে সংকেত--- হিসাবে ব্যবহৃত হয় , যেমন:

  1. নির্দেশাবলীর পরে দস্তাবেজটি সূচনা করতে , অর্থাৎ বর্তমান অনুমান অনুসারে %YAMLবা %TAGলাইনগুলি। উদাহরণ স্বরূপ:

    %YAML 1.2
    %TAG !foo! !foo-types/
    ---
    myKey: myValue
    
  2. যখন আপনার একই স্ট্রিমে একাধিক ইয়ামল ডকুমেন্ট রয়েছে, তখন দস্তাবেজটি সূচনা করার জন্য , যেমন একটি ইয়ামল ফাইল:

    doc 1
    ---
    doc 2
    

    যদি ডক্ট 2 এর কিছু পূর্ববর্তী নির্দেশ থাকে তবে ...পার্সারকে ডক 1 এর শেষ (এবং ডক 2 এর পূর্বে সম্ভাব্য নির্দেশাবলীর সূচনা) নির্দেশ করতে আমাদের তিনটি বিন্দু ব্যবহার করতে হবে । উদাহরণ স্বরূপ:

    doc 1
    ...
    %TAG !bar! !bar-types/
    ---
    doc 2
    

ইয়ামল পার্সার প্রয়োগকারীদের জন্য স্পেকটি ভাল। তবে, আমি এই নিবন্ধটি ব্যবহারকারীর দৃষ্টিকোণ থেকে পড়া সহজ মনে করি find


আমি YAML 1.2 স্পেসে 211 প্রোডাকশন রুলটি এমনভাবে পড়েছি যাতে নীচের নথিতে আপনার নির্দেশনা থাকলেও আপনার কোনও ডকুমেন্ট-এন্ড-ইন্ডিকেটরের প্রয়োজন হবে না, এক্ষেত্রে কেবলমাত্র প্রয়োজনীয় জিনিসটি হ'ল আপনার শেষ- নির্দেশিকা সূচক (শুরুতে l-explicit-document)।
অ্যান্থন

তিনটি বিন্দু ব্যবহারের উপর আমার বোঝার এই বাক্য উপর ভিত্তি করে তৈরি বৈশিষ্ট : "একটি নথি একটি নথি শেষ মার্কার লাইন দ্বারা সমাপ্ত না হয়, তাহলে নীচের দস্তাবেজটি একটি নির্দেশনা শেষ মার্কার লাইন দিয়ে শুরু হওয়া উচিত।" একটি নথি প্রয়োগ দিয়ে শুরু করতে নির্দেশিকাগুলি শেষের চিহ্নিতকারী ---অর্থ এই দস্তাবেজের জন্য কোনও নির্দেশের অনুমতি নেই allowed সুতরাং ডক্ট 2 এর যদি নির্দেশ থাকে তবে ডক্ট 1 টি অবশ্যই নথির শেষের মার্কার দিয়ে শেষ করা উচিত ...
ইইউ

প্রকৃতপক্ষে, এল-স্পেসিফিক-ডকুমেন্টের সংজ্ঞা এটির জন্য নির্দেশকে নিষেধ করে: "একটি স্পষ্ট দলিল একটি সুস্পষ্ট নির্দেশনা শেষ মার্কার লাইনের সাথে শুরু হয় তবে কোনও নির্দেশ নেই।"
ইইউ

বিধি 211 স্পষ্টভাবে এল-স্পেসিফিক-ডকুমেন্টের বাইরের দিকনির্দেশনা রয়েছে এবং আমি নিশ্চিত নই যে আপনার পাঠ্যটি উদ্ধৃতি করাও তার সাথে বিরোধী কিনা। যে কোনও ক্ষেত্রে পাইথন ওয়াইএএমএল পার্সাররা সেভাবে এটি বাস্তবায়ন করে (যেমন পরবর্তী নথির নির্দেশাবলীর আগে আপনাকে স্পষ্টভাবে শেষের নথির সূচকের দরকার নেই)।
অ্যান্থন

আমি 211 বিধিটি পূর্বের দিকনির্দেশকে অনুমতি দিচ্ছি না l-explicit-document। অভিব্যক্তিটিতে l-document-prefix*নির্দেশনা থাকে না। আমি পাইথন ইয়ামল পার্সারের সাথে পরিচিত নই, তবে একটি আকর্ষণীয় প্রশ্ন হ'ল এটি যদি বিন্দু নির্দেশাবলী অনুসরণ না করে তবে কেবল চুপচাপ নির্দেশনাগুলি এড়িয়ে যায় কিনা।
Yi Ou

55

আপনি যদি YAMLকোনও নির্দেশনা দিয়ে শুরু না করেন তবে তাদের রাখা বাধ্যতামূলক নয় । যদি এটি হয় তবে আপনার সেগুলি ব্যবহার করা উচিত।

আসুন ডকুমেন্টেশন একবার দেখুন

3.2.3.4। ডিরেক্টিভ

প্রতিটি দস্তাবেজ একটি নির্দেশের সেট সঙ্গে যুক্ত হতে পারে। একটি নির্দেশকের একটি নাম এবং প্যারামিটারগুলির একটি alচ্ছিক ক্রম রয়েছে। দিকনির্দেশনাগুলি ওয়াইএএমএল প্রসেসরের নির্দেশাবলী, এবং অন্যান্য সমস্ত উপস্থাপনা বিবরণের মতো ওয়াইএএমএল সিরিয়ালাইজেশন ট্রি বা উপস্থাপনের গ্রাফে প্রতিফলিত হয় না । YAML এর এই সংস্করণটি দুটি নির্দেশকে "YAML" এবং "TAG" সংজ্ঞায়িত করে। অন্যান্য সমস্ত নির্দেশাবলী ভবিষ্যতের ওয়াইএএমএল সংস্করণগুলির জন্য সংরক্ষিত।

নির্দেশের জন্য ডকুমেন্টেশনে এর একটি উদাহরণও পাওয়া যায়YAML

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