ইয়ামএল: ওয়াইএএমএল-এ স্ট্রিংয়ের জন্য আমার কি কোট দরকার?


398

আমি একটি রেল প্রকল্পের আন্তর্জাতিকীকরণের জন্য একটি ওয়াইএএমএল অভিধান লেখার চেষ্টা করছি। যদিও আমি কিছুটা বিভ্রান্ত হয়ে পড়েছি, যেমন কিছু ফাইলগুলিতে আমি ডাবল-কোট এবং কিছুতে স্ট্রিং দেখতে পাই। কয়েকটি বিষয় বিবেচনা করুন:

  • উদাহরণ 1 - সমস্ত স্ট্রিং ডাবল কোট ব্যবহার করে;
  • উদাহরণ 2 - কোনও স্ট্রিং (শেষ দুটি ব্যতীত) কোট ব্যবহার করবেন না;
  • YAML পাকপ্রণালীর বলেছেন: উদ্ধৃতি চিহ্ন মধ্যে স্ট্রিং আবদ্ধ আপনি escapings ব্যবহার করতে ASCII এবং ইউনিকোড অক্ষর প্রতিনিধিত্ব করতে পারেন। এর অর্থ কি আমি যখন কেবল কয়েকটি অক্ষর থেকে বাঁচতে চাই তখন আমার ডাবল উদ্ধৃতি ব্যবহার করা উচিত? যদি হ্যাঁ - তবে কেন তারা প্রথম উদাহরণে সর্বত্র ডাবল উদ্ধৃতি ব্যবহার করে - কেবল unityক্য / শৈলিক কারণে?
  • উদাহরণ 2 এর শেষ দুটি লাইন !- অ-নির্দিষ্ট ট্যাগ, যখন প্রথম উদাহরণের শেষ দুটি লাইন ব্যবহার করে না - এবং তারা উভয়ই কাজ করে।

আমার প্রশ্নটি: ওয়াইএএমএলে বিভিন্ন ধরণের উদ্ধৃতি ব্যবহারের নিয়ম কী?

এটা কি বলা যেতে পারে:

  • সাধারণভাবে, আপনার উদ্ধৃতিগুলির দরকার নেই;
  • আপনি যদি অক্ষরগুলি থেকে বাঁচতে চান তবে ডাবল উদ্ধৃতি ব্যবহার করুন;
  • !একক উদ্ধৃতি ব্যবহার করুন , কখন ...?!?

1
দ্বিতীয় লিঙ্কটি আর কাজ করছে না, আমি আপনার উদাহরণগুলি প্রশ্নে রাখার পরামর্শ দিই।
হেরোইন

উত্তর:


565

প্রশ্ন এবং কিছু পরীক্ষায় উদ্ধৃত ওয়াইএএমএল কুকবুকের একটি সংক্ষিপ্ত পর্যালোচনা করার পরে, আমার ব্যাখ্যাটি এখানে:

  • সাধারণভাবে, আপনার উদ্ধৃতিগুলির দরকার নেই।
  • স্ট্রিংকে জোর করার জন্য উদ্ধৃতিগুলি ব্যবহার করুন, উদাহরণস্বরূপ যদি আপনার কী বা মানটি হয় 10তবে আপনি এটি স্ট্রিং ফিরিয়ে দিতে চান এবং ফিক্সনাম নয়, লিখুন '10'বা "10"
  • ব্যবহার করুন উদ্ধৃতি যদি আপনার মান বিশেষ অক্ষর অন্তর্ভুক্ত (যেমন :, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, \)।
  • একক উদ্ধৃতি আপনাকে আপনার স্ট্রিংয়ে প্রায় কোনও অক্ষর রাখতে দেয় এবং এস্কেপ কোডগুলি বিশ্লেষণ করার চেষ্টা করবে না। '\n'স্ট্রিং হিসাবে ফিরে আসবে \n
  • ডাবল উদ্ধৃতিগুলি পার্সেপ কোডগুলি। "\n"লাইন ফিডের চরিত্র হিসাবে ফিরে আসবে।
  • বিস্মৃত চিহ্নটি একটি পদ্ধতির পরিচয় দেয়, উদাহরণস্বরূপ !ruby/symরুবি প্রতীকটি ফিরিয়ে আনতে।

আমার কাছে মনে হয় যে সর্বোত্তম পন্থাটি হ'ল আপনার প্রয়োজন না থাকলে কোট ব্যবহার না করা এবং তারপরে আপনি নির্দিষ্টভাবে এস্কেপ কোডগুলি প্রক্রিয়া করতে না চান তবে একক উদ্ধৃতি ব্যবহার করা।

হালনাগাদ

"হ্যাঁ" এবং "না" উদ্ধৃতিতে আবদ্ধ করা উচিত (একক বা ডাবল) অথবা অন্যথায় তাদের ট্রু ক্লাস এবং ফলসক্লাস মান হিসাবে ব্যাখ্যা করা হবে:

en:
  yesno:
    'yes': 'Yes'
    'no': 'No'

16
এটি পুরোপুরি পুরো ছবি নয়। উদাহরণস্বরূপ, @এবং `শুরুতে ব্যতীত সরল স্ট্রিংয়ের যে কোনও জায়গায় ব্যবহার করা যেতে পারে, কারণ সেগুলি সংরক্ষিত সূচক
অ্যাডাম স্পায়ার্স

19
আমি পুরো ছবিটি দেওয়ার চেষ্টা করছিলাম না, কেবল থাম্বের কিছু নিয়ম। হ্যাঁ, এটি কখনও কখনও মনে হয়, কিছু বিশেষ অক্ষর (সংরক্ষিত সূচক) উদ্ধৃতি ব্যতীত ব্যবহার করা যেতে পারে (যতক্ষণ না কোনও সংরক্ষিত সূচক সরল স্কেলার শুরু করে না) তবে আপনি যখনই কোনও বিশেষ চরিত্র দেখেন তবে উদ্ধৃতিগুলি ব্যবহার করা ভুল নয়।
মার্ক বেরি

33
ওয়াইএএমএলে স্ট্রিংয়ের নিয়মগুলি অত্যন্ত জটিল, কারণ এখানে বিভিন্ন ধরণের স্ট্রিং রয়েছে। আমি এখানে একটি টেবিল লিখেছি: stackoverflow.com/questions/3790454/…
স্টিভ বেনেট


6
এছাড়াও, আমি এখানে লিখেছি একটি সম্পূর্ণ সম্পূর্ণ রেফারেন্স: ব্লগস.পার্ল.আর.এল.এল
ইউজারস

0

ডকারের সাথে একটি রেল অ্যাপ্লিকেশন নিয়ে কাজ করার সময় আমার এই উদ্বেগ ছিল ।

আমার সর্বাধিক পছন্দের পন্থাটি হ'ল সাধারণভাবে উদ্ধৃতি ব্যবহার না করা । এর মধ্যে এর জন্য উদ্ধৃতি ব্যবহার না করা অন্তর্ভুক্ত :

  • মত ভেরিয়েবল ${RAILS_ENV}
  • একটি কোলন দ্বারা বিভক্ত মান (:) মত postgres-log:/var/log/postgresql
  • অন্যান্য স্ট্রিংয়ের মান

আমি তবে integerমানগুলির জন্য ডাবল-কোটস ব্যবহার করি যা স্ট্রিংগুলিতে রূপান্তর করতে হবে:

  • ডকার-রচনা সংস্করণ পছন্দ version: "3.8"
  • পোর্ট সংখ্যা পছন্দ "8080:8080"

যাইহোক, বিশেষ ক্ষেত্রে পছন্দের booleans, floats, integers, এবং অন্যান্য ক্ষেত্রে, যেখানে এন্ট্রি মানের জন্য ডাবল কোট ব্যবহার হিসেবে ব্যাখ্যা করা যেতে পারে strings, না দয়া করে না ব্যবহার ডাবল কোট।

docker-compose.ymlএই ধারণাটি ব্যাখ্যা করতে এখানে একটি নমুনা ফাইল রয়েছে:

version: "3"

services:
  traefik:
    image: traefik:v2.2.1
    command:
      - --api.insecure=true # Don't do that in production
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

এখানেই শেষ.

আশা করি এটা কাজে লাগবে

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