স্কালায় প্রতীক আক্ষরিক জন্য কিছু উদাহরণ ব্যবহারের ক্ষেত্রে কী কী?


93

স্ক্যালায় আমি যা পড়েছি তা থেকে প্রতীকী আক্ষরিক ব্যবহার অবিলম্বে পরিষ্কার হয় না। কেউ কি কিছু বাস্তব বিশ্বের ব্যবহার ভাগ করে নেবে?

প্রতীক আক্ষরিক দ্বারা কোনও জাভা আইডিয়ম coveredেকে দেওয়া হচ্ছে? কোন ভাষায় অনুরূপ গঠন রয়েছে? আমি পাইথনের পটভূমি থেকে আসছি এবং নিশ্চিত নই যে সেই ভাষায় সাদৃশ্যপূর্ণ কিছু রয়েছে।

'হ্যালো ওয়ার্ল্ড বনাম "হ্যালো ওয়ার্ল্ড" ব্যবহার করতে আমাকে কী অনুপ্রাণিত করবে?

ধন্যবাদ

উত্তর:


77

জাভা পদগুলিতে, চিহ্নগুলি ইন্টার্নযুক্ত স্ট্রিং। এর অর্থ, উদাহরণস্বরূপ, সেই রেফারেন্স সমতা তুলনা ( eqস্কালায় এবং ==জাভাতে) সাধারণ সমতা তুলনা ( ==স্কালায় এবং equalsজাভাতে) হিসাবে একই ফল দেয় : 'abcd eq 'abcdসত্যই ফিরে আসবে, "abcd" eq "abcd"সম্ভবত জেভিএমের তীব্রতার উপর নির্ভর করে (ভাল, এটি হওয়া উচিত) আক্ষরিক জন্য, তবে স্ট্রিংগুলির জন্য নয় যা সাধারণত গতিশীলভাবে তৈরি হয়েছিল)।

অন্যান্য ভাষাগুলি যে চিহ্নগুলি ব্যবহার করে তা হ'ল লিস্প (যা 'abcdস্কালার মতো ব্যবহার করে ), রুবি ( :abcd), এরলং এবং প্রোলোগ ( abcd; প্রতীকগুলির পরিবর্তে এগুলিকে বলা হয়)।

আমি যখন একটি স্ট্রিংয়ের কাঠামোর বিষয়ে চিন্তা না করি এবং কোনও কিছুর নাম হিসাবে খাঁটিভাবে ব্যবহার করি তখন আমি একটি চিহ্ন ব্যবহার করব। উদাহরণস্বরূপ, যদি আমার কাছে সিডি উপস্থাপনের একটি ডেটাবেস টেবিল থাকে, যার মধ্যে "দাম" নামে একটি কলাম অন্তর্ভুক্ত থাকে তবে আমি মূল্যবোধ করি না যে "দাম" -এর দ্বিতীয় অক্ষরটি "আর", বা কলামের নামগুলি সংলগ্ন করতে পারে; সুতরাং স্কালায় একটি ডাটাবেস গ্রন্থাগারটি যথাযথভাবে সারণী এবং কলামের নামের জন্য চিহ্নগুলি ব্যবহার করতে পারে।


25
এটি সম্ভবত মনে রাখবেন যে == স্কালায় সমান কাজগুলি হয়, সুতরাং "eq" পদ্ধতিটি ব্যবহার করার সময় পার্থক্যটি ঘটবে যা রেফারেন্স সাম্যতা করে। একটি বোনাস, যদিও, প্রতীক মধ্যে তুলনা অত্যন্ত সস্তা।
কলম

@ ক্যালাম, যেমন দুটি স্ট্রিংয়ের মধ্যে তুলনা করা হয়। জাভা ইন্টার্নস (কম বেশি) সমস্ত স্ট্রিং।
এলাজার লাইবোভিচ

4
@ এলাজার: এটা কি সত্যি? আমি এই ধারণাটির মধ্যে ছিলাম যে জাভা কেবল আক্ষরিক অর্ন্তভূক্ত করেছিল (অর্থাত্ তুচ্ছ উদাহরণের মধ্যে প্রায় সমস্ত স্ট্রিং, এবং উত্পাদন সফ্টওয়্যারটিতে প্রায় কোনও স্ট্রিং নেই)। প্রতীকগুলির ব্যবহারের ক্ষেত্রে সাধারণত আক্ষরিক মান হিসাবে সন্দেহ হয় (আমি আপনাকে সন্দেহ করি যে আপনি প্রায়শই এগুলি স্ক্র্যাচ থেকে তৈরি করেন), সুতরাং যুক্তিযুক্তভাবে আপনি যে প্রধান সুবিধাটি পাবেন তা হ'ল আরও একটি বর্ণনামূলক প্রকার।
কলম

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

4
সুতরাং, "হ্যালো, বিশ্ব!" অক্ষরের একটি ক্রমিক সংগ্রহ যখন 'হ্যালো ওয়ার্ল্ড হ'ল 14392 এর চেয়ে লোকবান্ধব মান
হোলম্যান II

26

কোডে পদ্ধতির নামগুলি বলার জন্য আপনার যদি সরল স্ট্রিং থাকে তবে সম্ভবত এটি পাস হয়ে যায়, আপনি জিনিসগুলি যথাযথভাবে পৌঁছে দিচ্ছেন না। এটি ডেটা / কোড সীমানা ইস্যুর সাজানো, লাইনটি আঁকানো সর্বদা সহজ নয়, তবে আমরা যদি বলতে পারি যে সেই উদাহরণে এই পদ্ধতির নামগুলি তাদের ডেটার চেয়ে আরও বেশি কোড হয়, তবে আমরা স্পষ্টভাবে চিহ্নিত করতে চাই যে কিছু ।

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

এই লিঙ্কটি এটি মোটামুটি ভালভাবে আলোচনা করে।


4
এটি অ্যাভ সহায়ক ব্যাখ্যা। এটি আমাকে
এনামগুলির বিকল্পগুলির বিবেচনায় ভাবতে বাধ্য করে

2

পাইথন সমস্ত ভেরিয়েবল, ফাংশন, মডিউল ইত্যাদির নামের সাথে "ইন্টার্নড স্ট্রিংস" এর একটি অভ্যন্তরীণ বৈশ্বিক টেবিল স্থাপন করে এই টেবিলের সাহায্যে দোভাষী দ্রুত অনুসন্ধান এবং অপ্টিমাইজেশন করতে পারে। আপনি এই প্রক্রিয়াটি জোর করে internফাংশন দিয়ে ( sys.internপাইথন 3 এ) করতে পারেন।

এছাড়াও, জাভা এবং স্কালা দ্রুত অনুসন্ধানের জন্য স্বয়ংক্রিয়ভাবে "ইন্টার্নযুক্ত স্ট্রিংস" ব্যবহার করে। স্কালার সাহায্যে আপনি internস্ট্রিংয়ের অভ্যন্তরীণ অংশটিকে বাধ্য করার জন্য পদ্ধতিটি ব্যবহার করতে পারেন তবে এই প্রক্রিয়াটি সমস্ত স্ট্রিংয়ের সাথে কাজ করে না। প্রতীকগুলি অন্তর্ভুক্ত হওয়ার গ্যারান্টিযুক্ত হওয়া থেকে উপকৃত হয়, সুতরাং একক রেফারেন্স সাম্যতা চেক উভয়ই সাম্য বা অসমতা প্রমাণ করার জন্য যথেষ্ট prove


1

দ্রষ্টব্য: Symbolsহ্রাস করা হবে এবং তারপরে স্কালা 3 (ডটি) এ সরানো হবে।

তথ্যসূত্র: http://dotty.epfl.ch/docs/references/DPped-features/symlits.html

এ কারণে, আমি ব্যক্তিগতভাবে Symbolsআর ব্যবহার না করার পরামর্শ দিই (কমপক্ষে নতুন স্কাল কোডে)। যেমন ডট ডকুমেন্টেশন বলে:

প্রতীক আক্ষরিক আর সমর্থিত হয় না

পরিবর্তে এটি সরল স্ট্রিং আক্ষরিক [...] ব্যবহার করার পরামর্শ দেওয়া হয়


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