স্কালা বৈশিষ্ট্য বনাম জাভা 8 ইন্টারফেসের মধ্যে পার্থক্য এবং মিল কী?


84

আমি স্কেলে নতুন এসেছি মজা করার জন্য ভাষা শিখতে শুরু করেছি এবং আমি এখনও এর চারপাশে মাথা পেতে চেষ্টা করছি। স্ক্যালাল বৈশিষ্ট্য সম্পর্কে আমার বোঝাটি হ'ল এগুলি জাভা ইন্টারফেসের মতো যা কিছু পদ্ধতির প্রয়োগ থাকতে পারে।

জাভা 8 হ'ল ইন্টারফেস যুক্ত করছে যেখানে ডিফল্ট পদ্ধতি থাকতে পারে যেখানে বাস্তবায়ন সরবরাহ করা যেতে পারে।

জাভা 8 ইন্টারফেস এবং স্কালাল বৈশিষ্ট্যের মধ্যে মিল এবং পার্থক্যগুলি কী কী?


4
সেই ওয়েবসাইটটি পরীক্ষা করে দেখুন, এটি আপনাকে সাহায্য করতে পারে infoq.com/articles/java-8-vs-scala
akki0996

4
tl; dr: ভার্চুয়াল এক্সটেনশন পদ্ধতিগুলির [ডিফল্ট পদ্ধতিগুলি] এর প্রাথমিক প্রেরণা হলেন এপিআই বিবর্তন। একটি স্বাগত পার্শ্ব প্রতিক্রিয়া হ'ল তারা একাধিক উত্তরাধিকারের ফর্ম সরবরাহ করে যা আচরণের মধ্যে সীমাবদ্ধ। স্কালার বৈশিষ্ট্যগুলি কেবল আচরণের একাধিক উত্তরাধিকার সরবরাহ করে না, রাষ্ট্রেরও। রাষ্ট্র এবং আচরণের উত্তরাধিকারের পাশাপাশি বৈশিষ্ট্যগুলি বাস্তবায়নকারী শ্রেণীর একটি রেফারেন্স পাওয়ার জন্য একটি উপায় সরবরাহ করে ... [স্কালা] বৈশিষ্ট্যগুলি [জাভা 8 এর] ভার্চুয়াল এক্সটেনশন পদ্ধতির চেয়ে আরও বেশি উন্নত বৈশিষ্ট্যগুলি সরবরাহ করে।
ব্রাইস রোনকেস

উত্তর:


46

জাভা 8 'এর জন্য অনুপ্রেরণার ডিফল্ট পদ্ধতি এবং স্কালার বৈশিষ্ট্য পৃথক।

নিরাপদ এপিআই বিবর্তন এবং একাধিক উত্তরাধিকারের সীমিত ফর্মকে সমর্থন করার জন্য প্রাক্তনটির পরিচয় হয়েছিল। প্রজেক্ট ল্যাম্বডায় ফাংশনাল প্রোগ্রামিং আইডিয়ামগুলির উপকারের সাথে এটি যুক্ত হওয়া উপকারী example উদাহরণস্বরূপ, সমস্ত সম্ভাব্য প্রয়োগকারীকে পরিবর্তন না করে ইন্টারফেস forEach(lambda)করার একটি পদ্ধতি java.util.Collection(যা পিছনে সামঞ্জস্যতা না ভেঙে আসলে অসম্ভব)। পার্শ্ব প্রতিক্রিয়া হিসাবে এটি মিশ্রণ রচনা একটি ফর্ম প্রস্তাব ।

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


আপনি কি এই সম্পর্কে আরও বিশদ বর্ণনা করতে পারেন "স্কালাল বৈশিষ্ট্যগুলি স্ক্র্যাচ থেকে মডুলার উপাদানগুলির সংস্থার জন্য বিল্ডিং ব্লক হিসাবে তৈরি করা হয়েছিল।" ?
আদেলিন

14

নোট করুন যে স্কেল 2.12.0 আরসি 1 (সেপ্টেম্বর 2016) সহ , Traitএখন একটি ইন্টারফেসে সংকলন করে।
স্কালা 2.12 জাভা 8 এর নতুন বৈশিষ্ট্যগুলির সর্বোত্তম ব্যবহার করা

জাভা 8 এর সাথে ইন্টারফেসগুলিতে কংক্রিট পদ্ধতিগুলি মঞ্জুর করে, স্কেলা 2.12 একটি একক ইন্টারফেসে একটি বৈশিষ্ট্য সংকলন করতে সক্ষম।

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

দেখুন Scala জনসংযোগ 5003 আরো বাস্তবায়ন পার্থক্য।


4

মিল হিসাবে, উভয় ডিফল্ট পদ্ধতি থাকতে পারে,

পার্থক্য পার্শ্ব, আমরা শুধুমাত্র উদাহরণে বৈশিষ্ট্যগুলি যুক্ত করতে পারি, এবং পুরো ক্লাসেও নয়। উদাহরণ:

trait A { def m = ??? }
class B 

new B() with A 

বুদ্ধিমানের মতো আমরা উদাহরণস্বরূপ বৈশিষ্ট্য স্তরগুলি যুক্ত রাখতে পারি।

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