সি ++ সি থেকে সত্যিকারের নীল অপারেটরদের উত্তরাধিকার সূত্রে আমার অর্থ এই যে 6 + 4-এ "+" খুব বিশেষ। উদাহরণস্বরূপ, আপনি এটি + ফাংশনে একটি পয়েন্টার পেতে পারেন না।
অন্যদিকে স্কালায় অপারেটর নেই। শব্দের অ-চিহ্নগুলির জন্য অগ্রাধিকারের ব্যবস্থার তুলনায় পদ্ধতির নামগুলি সংজ্ঞায়িত করার ক্ষেত্রে এটির যথেষ্ট নমনীয়তা রয়েছে। সুতরাং প্রযুক্তিগতভাবে স্কালার অপারেটর ওভারলোডিং নেই।
আপনি যেটিকে কল করতে চান না কেন, অপারেটর ওভারলোডিং সহজাতভাবে খারাপ নয়, এমনকি সি ++ তেও নয়। সমস্যাটি যখন খারাপ প্রোগ্রামাররা এটি ব্যবহার করে। তবে প্রকৃতপক্ষে আমি এই মতামত নিয়েছি যে অপারেটর ওভারলোডিং অপব্যবহারের জন্য প্রোগ্রামারদের ক্ষমতা হরণ করা প্রোগ্রামাররা যে সমস্ত জিনিস অপব্যবহার করতে পারে সেগুলি ঠিক করার বালতিতে একটি ড্রপ রাখে না। আসল উত্তর হ'ল মেন্টরিং। http://james-iry.blogspot.com/2009/03/operator-overloading-ad-absurdum.html
কোনটিই নয়, সি ++ এর অপারেটর ওভারলোডিং এবং স্কালার নমনীয় পদ্ধতির নামকরণের মধ্যে পার্থক্য রয়েছে যা আইএমএইচও, স্কালাকে কম আপত্তিজনক এবং আরও আপত্তিজনক করে তোলে।
সি ++ তে ইন-ফিক্স স্বরলিপি পাওয়ার একমাত্র উপায় হ'ল অপারেটরগুলি। অন্যথায় আপনাকে অবজেক্ট.মেসেজ (আর্গুমেন্ট) বা পয়েন্টার-> মেসেজ (আর্গুমেন্ট) বা ফাংশন (আর্গুমেন্ট 1, আর্গুমেন্ট 2) ব্যবহার করতে হবে। সুতরাং আপনি যদি আপনার কোডটিতে একটি নির্দিষ্ট ডিএসলিশ শৈলী চান তবে অপারেটরগুলি ব্যবহার করার চাপ রয়েছে।
স্কেলে আপনি কোনও বার্তা প্রেরণের সাথে ইনফিক্স নোটেশন পেতে পারেন। "অবজেক্ট মেসেজ আর্গুমেন্ট" পুরোপুরি ঠিক আছে, যার অর্থ আপনাকে কেবল ইনফিক্স নোটেশন পেতে অ-শব্দের চিহ্ন ব্যবহার করার দরকার নেই।
সি ++ অপারেটর ওভারলোডিং মূলত সি অপারেটরগুলির মধ্যে সীমাবদ্ধ। এই সীমাবদ্ধতার সাথে একত্রিত হয়ে যে কেবল অপারেটরগুলি ইনফিক্স ব্যবহার করা যেতে পারে যা "+" এবং ">>" এর মতো তুলনামূলকভাবে কয়েকটি চিহ্নের উপর বিস্তৃত সম্পর্কহীন ধারণাগুলির মানচিত্র তৈরি করার জন্য লোকদের উপর চাপ সৃষ্টি করে people
স্কালা পদ্ধতির নাম হিসাবে বৈধ অ-শব্দের প্রতীকগুলির একটি বিশাল পরিসরের অনুমতি দেয়। উদাহরণস্বরূপ, আমি একটি এম্বেড থাকা প্রোলগ-ইশ ডিএসএল পেয়েছি যেখানে আপনি লিখতে পারেন
female('jane)! // jane is female
parent('jane,'john)! // jane is john's parent
parent('jane, 'wendy)! // jane is wendy's parent
mother('Mother, 'Child) :- parent('Mother, 'Child) & female('Mother) //'// a mother of a child is the child's parent and is female
mother('X, 'john)? // find john's mother
mother('jane, 'X)? // find's all of jane's children
: -,!,?, এবং & চিহ্নগুলি সাধারণ পদ্ধতি হিসাবে সংজ্ঞায়িত করা হয়। কেবলমাত্র সি ++ তে এবং বৈধ হবে তাই এই ডিএসএলকে সি ++ এ ম্যাপ করার চেষ্টা করার জন্য এমন কিছু চিহ্নের প্রয়োজন হবে যা ইতিমধ্যে খুব আলাদা ধারণা ধারণ করে।
অবশ্যই, এটি অন্য ধরণের অপব্যবহারের জন্য স্কালাকেও উন্মুক্ত করে। স্কালায় আপনি একটি পদ্ধতির নাম রাখতে পারেন you! & ^% যদি আপনি চান
অন্যান্য ভাষার জন্য, স্কালার মতো, শব্দহীন ফাংশন ব্যবহারের ক্ষেত্রে নমনীয় এবং পদ্ধতির নামগুলি স্মার্টটাক দেখতে পায় যেখানে স্কালার মতো প্রতিটি "অপারেটর" হ'ল অন্য একটি পদ্ধতি এবং হাস্কেল যা প্রোগ্রামারকে নমনীয়ভাবে নামকরণের অগ্রাধিকার এবং স্থিরতা নির্ধারণ করতে দেয় ফাংশন।