জাভাতে এমন কোনও লাইব্রেরি রয়েছে যা লিনকের কার্যকারিতা সরবরাহের কাছাকাছি আসে?
জাভাতে এমন কোনও লাইব্রেরি রয়েছে যা লিনকের কার্যকারিতা সরবরাহের কাছাকাছি আসে?
উত্তর:
সম্পূর্ণ লিনকিউ ক্যোয়ারী সিনট্যাক্স পেতে আপনার নতুন কীওয়ার্ড এবং বাক্য গঠন কাঠামো সমর্থন করে ভাষা বৈশিষ্ট এবং সংকলকগুলির একটি আপডেট দরকার। এটি এখানে বেশিরভাগ পাঠকের বাইরে is
জাভাতে লিনক-জাতীয় পদ্ধতি-শৃঙ্খল সিনট্যাক্স পেতে যা সি # এর মতো দেখায় এবং কাজ করে, আপনার দুটি জিনিস প্রয়োজন যা জাভা সমর্থন করে না; এক্সটেনশন পদ্ধতি (স্থির পদ্ধতি যা কোনও উদাহরণ হিসাবে প্রয়োগ করা যেতে পারে যেমন এটি কোনও উদাহরণ পদ্ধতি), এবং লাম্বদা এক্সপ্রেশন (বেনামে প্রতিনিধি)। যাইহোক, যদি আপনি কিছুটা অতিরিক্ত কোডিং ভার্বোসটি করতে ইচ্ছুক হন তবে এই দুটি বিদ্যমান জাভা কনস্ট্রাক্টসের সাথে প্রতারণা করা যায়। জাভা সম্পর্কে আমি একটি জিনিস বিশেষভাবে আশ্চর্যজনক মনে করি বেনামে ইন্টারফেস বাস্তবায়ন তৈরি করার ক্ষমতা; একটি একক খাঁটি ফাংশন সহ একটি ইন্টারফেসে প্রয়োগ করা হয়েছে, যা মূলত সাধারণ বেনাম প্রতিনিধিদের জন্য অনুমতি দেয়, তবে আপনার প্রয়োজন প্রতিটি পদ্ধতির স্বাক্ষরের জন্য একটি ইন্টারফেস থাকে।
সুতরাং, লিঙ্কের আইমনামেবল (জাভাহেডগুলির জন্য পরিবেশনযোগ্য) দিক, একটি পদ্ধতি শৃঙ্খলা হিসাবে, জাভাতে আনুমানিক সম্ভব হওয়া উচিত; আপনি মূলত এটিকে একটি সাবলীল ইন্টারফেস হিসাবে প্রয়োগ করতে চান যা একটি মোনাডকে নিয়ন্ত্রণ করে। আপনার মত একটি ক্লাস দরকার LinqIterable
, ইটেবারে প্রয়োগ করা, এটি:
সুতরাং, আপনি সম্ভবত একটি "সাবলীল" লাইব্রেরি সংজ্ঞায়িত করতে পারেন যা একটি বিবৃতি যেমন:
Map<String, Integer> results = Linq.FromIterable(sourceList)
.Where(new Predicate{public bool Op(SomeStruct in){return in.SomeString == "criteria";}})
.OrderBy(new Func{public String Op(SomeStruct in){return in.SomeOtherString;}})
.Select(new Func{public SomeOtherStruct Op(SomeStruct in){return new SomeOtherStruct(in.SomeOtherString, in.SomeInt);}})
.ToMap(new Func{public String Op(SomeOtherStruct in){return in.StringField;}},
new Func{public Integer Op(SomeOtherStruct in){return in.IntField;}});
আসল গ্রন্থাগার তৈরি করা একটি ইন্টারনেট প্রশ্নোত্তর উত্তরগুলির সুযোগের বাইরে অনেকটা অনুশীলন। আমি কেবল বলেছি এটি সম্ভব, সহজ নয়।
এক্সপ্রেশন গাছগুলি রকেট বিজ্ঞান নয়, তবে নেট এই অঞ্চলে কী আছে তা বাস্তবায়নের জন্য এটি একটি গুরুত্বপূর্ণ প্রকল্প হবে; আপনার কেবল একটি এক্সপ্রেশন ট্রি তৈরি করার দক্ষতার প্রয়োজন নেই, আপনাকে নির্গত বাইটোকোডগুলি ব্যবহার করে এই গাছটিকে "সংকলন" করতে সক্ষম হতে হবে; আমি জানি না জাভার প্রতিচ্ছবি বেশ শক্তিশালী কিনা।
দেখা:
না। লিনাকের জাভা ঠিক নেই এমন প্রচুর ল্যাঙ্গেজ বৈশিষ্ট্য প্রয়োজন
ব্যবহারের Scala জন্য কারণে এখানে ব্যাখ্যা :
স্কালার .NET বন্দর ব্যবহার করুন। এটি আপনাকে নেট .NET- তে সমস্ত ক্ষেত্রে সম্পূর্ণ নেটিভ অ্যাক্সেস দেয়, এতে স্পষ্টতই লিনকিউ অন্তর্ভুক্ত থাকে।
তুমি পারবে না, তাহলে তোমার মত লিব ব্যবহার করার চেষ্টা করতে পারেন functionjava বা lambdaj , কিন্তু আপনি LINQ সত্যিই বন্ধ না আসবে।
আমি লাইব্রেরির তালিকায় পেয়ারা যুক্ত করব যা আপনাকে লিনকুইয়ের কিছু জিনিস অর্জনে সহায়তা করতে পারে।
তবে অন্যরা যেমন উল্লেখ করেছে, খাঁটি জাভার কোনও সমতুল্য নেই।
আপনি ক্লোজারে লিখিত এসকিউএল প্রশ্নের জন্য ডিএসএল করমা ব্যবহার করতে পারেন ।
সিনট্যাক্সটি বেশ ঝরঝরে:
(select user
(with address)
(fields :firstName :lastName :address.state)
(where {:email "korma@sqlkorma.com"}))
আপনি জাভা থেকে প্রাসঙ্গিক ক্লোজার লাইব্রেরিগুলি আমদানি করে এবং কেবল সাধারণ ক্লোজার / জাভা ইন্টারপ ব্যবহার করে খুব সহজেই এটি কল করতে পারেন।
জাভাতে কোনও নেটিভ বৈশিষ্ট্য নেই যা লিনিকের অনুকরণ করে। তবে, বেশ কয়েকটি এপিআই রয়েছে যা একই কার্যকারিতা সরবরাহ করে।
উদাহরণস্বরূপ, এই ব্লগ পোস্টে লিনাকের প্রতিলিপি তৈরি করতে একটি কাস্টম জার রয়েছে।
http://javaworldwide.blogspot.in/2012/09/linq-in-java.html
এবং এটি পোস্ট থেকে এপিআইর একটি উদাহরণ ব্যবহার:
ধরুন আমাদের কাছে একটি নামী আইডি রয়েছে এমন একটি প্রাণী বস্তু রয়েছে যা একটি তালিকা সহ উপস্থাপিত হয়েছে animals
। যদি আমরা তালিকা থেকে 'ও' যুক্ত সমস্ত প্রাণীর নাম পেতে চাই তবে আমরা animals
নীচের ক্যোয়ারীটি লিখতে পারি
from(animals).where("getName", contains("o")).all();
ব্লগ পোস্টে রেফারেন্সযুক্ত অন্য দুটি এপিআই রয়েছে: ল্যাম্বডজে এবং জে লিনক
where("getName", ...)
।