জাভাতে কখন নাল স্টেটমেন্ট ব্যবহার করা হবে?


10

একটি পাঠ্যপুস্তকে আমি একটি শ্রেণীর সন্ধান করছি, এটি বলা আছে, একটি বিবৃতি খালি থাকতে পারে (নাল স্টেটমেন্ট)। নাল স্টেটমেন্টটি কেবলমাত্র একটি সেমিকোলন হিসাবে সংজ্ঞায়িত করা হয়।

মৃত্যুদন্ড কার্যকর করার সময় এটি পুরোপুরি কিছুই করে না। নাল স্টেটমেন্টটি খুব কমই ব্যবহৃত হয়।

একজন পরিমিত অভিজ্ঞ প্রোগ্রামার হিসাবে, আমি এটি আকর্ষণীয় মনে করি যে তারা বলে যে খুব কমই ব্যবহৃত হয়, এর অর্থ কি কোথাও, এর ব্যবহার রয়েছে।

সম্ভবত এই জাতীয় বিবৃতি ব্যবহার কী হতে পারে?

উত্তর:


7

এটি বেশিরভাগই অকেজো, তবে কয়েকটি জায়গা রয়েছে যেখানে এটি প্রয়োজনীয়। উদাহরণ স্বরূপ:

while (DoSomething());

এটি DoSomething()পদ্ধতিটি কার্যকর করে যতক্ষণ না এটি মিথ্যা প্রত্যাবর্তন করে। অবশ্যই এই পদ্ধতিটি কিছু কার্যকর পার্শ্ব-প্রতিক্রিয়াও সম্পাদন করে। তবে খালি স্টেটমেন্ট, অর্থাত্ পেছনের সেমিকোলনটি প্রয়োজনীয়, অন্যথায় যদিও-লুপের পরিবর্তে পরবর্তী নীচের বিবৃতিটি অন্তর্ভুক্ত করা হবে।

(কিন্তু অন্যান্য উত্তর বিপরীত হয়, for(;;) {}হয় না প্রথম বন্ধনী থেকে খালি বিবৃতি একটি উদাহরণ, পরে একটি দফা বিবৃতি ধারণ করে না জন্য, এটা ঠিক সেমিকোলন আলাদা (ঐচ্ছিক) এক্সপ্রেশন ব্যবহার করে। See জাভা ব্যাকরণ বিস্তারিত জানার জন্য।)


3
+1 - এটিই কেবলমাত্র আমি কখনই সত্যই ব্যবহার করতে দেখেছি (যেমন বলা হয়েছে, 'ফর' বিবৃতিতে খালি অংশগুলি কিছুটা আলাদা)। আমি কেবল পরিবর্তন করব তা উল্লেখ করাই যে নাল স্টেটমেন্টটি তার নিজের লাইনে রেখে দেওয়া হয়েছে, তবে লুপের ঠিক পরে, যেখানে এটি কেবল একটি সাধারণ বিবৃতি বলে মনে হচ্ছে, এই ধরণের ব্যবহারটি পড়া খুব দূরে বিভ্রান্তিকর is টারমিনেটর ...
জুলে

12

কোনও বিবৃতি সিন্টেক্সিকভাবে প্রয়োজনীয় তবে শব্দার্থগতভাবে প্রয়োজন না হলে আপনি এটি ব্যবহার করতে পারেন। সর্বাধিক সাধারণ ঘটনাটি হ'ল লুপের জন্য একটি অংশ বাদ দেওয়া, উদাহরণস্বরূপ , যদিও বেশিরভাগ লোকের ব্যবহারটি বিজোড় এবং পড়া শক্ত বলে মনে হয়। আপনার বই যেমন বলে, এটি খুব কমই ব্যবহৃত হয়।


যে। অকেজো ভাষার বৈশিষ্ট্য। গুগল "কেবলমাত্র একটি সেমিকোলন জাভা" এর চেয়ে স্পষ্টভাবে ডুপ্লিকেশন পড়তে বাধ্য হবো।
ক্রিস সাইরেফাইস

2
@ ক্রিসক্রাইফাইস অন্যদিকে "কেবলমাত্র একটি সেমিকোলন: আপনার ভাষাটি পরিমিতরূপে বিবেচনা করার বিষয়টি বিবেচনা করে কী করা উচিত তা খুব স্পষ্ট। এটি কোনও পৃথক নিয়ম নয়, এটি অন্যান্য নিয়মের একটি পরিণতি you এছাড়াও আপনি যদি এটি শিখে ফেলেন একবার চিরকাল, সুতরাং আমি বলব এটি আসলে কোনও সমস্যা নয়
মরিসি

1
যদি মনে হয় আপনি যদি নিজের মতো করে লুপগুলি লেখেন তবে আপনি কিছু ভুল করছেন।
বেসিনেটর

আমার কাছে একটি স্লিপ-পোলিং পদ্ধতি রয়েছে যা আমি কখন কোনও ডিভাইস লাইনে ফিরে আসে তা যাচাই করতে ব্যবহার করি। কোডটি দেখতে অনেকটা এরকম: while ( sleepPoll(device, 1000, TimeUnit.MILLISECONDS) ) { ; }অবশ্যই আলাদা আলাদা লাইনে। আমি এটি লিখতে পারতাম while ( true ) { if ( ! sleepPoll(device, 1000, TimeUnit.MILLISECONDS) ) { break; } }তবে এটি ভুল হবে।
ববডালগাইশ

এটি 'অকার্যকর' পদ্ধতি থেকে প্রস্থান করার জন্য আমরা কী ব্যবহার করি তা বাতিল বিবৃতি নয়? void method(){ //code here. If(condition){return ;}}
লাইভ

9

আমি কিছুক্ষণ লুপ ব্যবহার করতে পছন্দ করি তবে একটি নাল অভিব্যক্তি আপনাকে এটি লিখতে দেয়:

for (;;) { thread.run(); }

যাইহোক, একটি নাল বিবৃতি আপনি এটি লিখুন:

while(true);
{
    thread.run();
}

যার প্রাথমিক উদ্দেশ্যটি হ'ল দরিদ্র রক্ষণাবেক্ষণ প্রোগ্রামারের সময় নষ্ট করা যিনি আপনার পরে আসেন এবং অবাক হন যে কেন থ্রেডটি চলছে না। একটি বিবৃতি অবশ্যই কিছুক্ষণ অনুসরণ করবে। একাকী; একটি বিবৃতি। সুতরাং এই বিবৃতি ব্লক আসলে লুপ অংশ নয়।

এটির ব্যবহারের ভাল ব্যবহার করার কথা নেই। তারা কেবল বিরল। এগুলি দেখতে সাধারণত:

{
    ;
}

কারণ এইভাবে এটি দেখতে আপনার বোঝার মতো আরও বেশি দেখাচ্ছে (এমনকি এটি কখনও কখনও যথেষ্ট নয়)।

সমাবেশে এই শূন্য বিবৃতিটিকে একটি এনওপি বলা হয় । পাইথনে একে পাস বলে । জাভাতে (এবং সি এর অন্যান্য সন্তানদের) এটি যেমন আপনি বলেছিলেন তেমন একটি সেমিকোলন, বা এমনকি সত্য দাবি করেছেন;

আমি কয়েকটি ব্যবহার সম্পর্কে জানি:

শব্দার্থক

একটি খালি জায়গা এবং উত্তর হিসাবে একটি শূন্য নিচে রাখার মধ্যে পার্থক্য রয়েছে। এটি স্পষ্টভাবে বলে, না আমি এখানে কিছু রাখা ভুলে যাইনি। এই কিছুই কিছুই বোঝানো হয় না। এটি সুস্পষ্ট কিছুই নয়। এই স্থান ইচ্ছাকৃতভাবে ফাঁকা রাখা। এইভাবে আমরা সংকলন করার জন্য N / A পাই।

নাল প্যাটার্ন

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

কখনও কখনও আপনি কিছু না ভাঙ্গিয়ে কিছু বন্ধ করতে পলিমারফিজমটি ব্যবহার করতে চান।

ডিবাগ

আপনি যখন ব্রেক ব্রেকপয়েন্ট সেট করেন তখন ব্রেকআপপয়েন্ট হওয়ার জন্য আপনার জায়গা দরকার। এখন নিশ্চিত হোন যে কিছু ডিবাগার আপনাকে এটিকে শেষের কোঁকড়া ধনুর্বন্ধনীতে সেট করতে দেবে তবে তারা যদি এটি সুন্দর না হয় তবে ভাষাটি আপনাকে সেই জায়গাটি কিছু না করলেও একটি জায়গা রাখার জন্য জোর করে।

সত্যিই কোনও জাভা জিনিস নয় তবে আরও রয়েছে:

বাইনারি ফিডিং

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


2
এটি পেডেন্টিক মনে হতে পারে তবে এর উদাহরণটি forনাল বিবৃতি নয়। নাল স্টেটমেন্ট (ওরফে খালি স্টেটমেন্ট) একই জায়গায় অন্যান্য বিবৃতি (যেমন একটি if) ঘটতে পারে, তবে নিম্নলিখিত বন্ধনীগুলি forসেমিকোলনের মধ্যে বিবৃতি দেয় না, কেবলমাত্র একটি আরম্ভকারী এবং দুটি অভিব্যক্তি, যা alচ্ছিক হতে পারে। সুতরাং এটি স্ট্যাটমেন্ট-টার্মিনেটর হিসাবে সেমিকোলনের আলাদা ব্যবহার। একটি খালি বিবৃতিটি সর্বশেষ সেমিকোলন হবেfor(;;);
জ্যাকবিবি

আপনি ঠিক বলেছেন, এটি পেডেন্টিক বলে মনে হচ্ছে: পি। ভাল, আমার সম্পাদনা নোট করুন।
candied_orange

-7

আমি এটি ব্যবহার করি কারণ জাভা এমনভাবে ডিজাইন করা হয়েছে যা মানুষের ভাষার সাথে একমত নয়। সি এর ক্ষেত্রেও একই কথা is

একটি বিবৃতি হয় statement;

একটি যদি-অন্যথায় বিবৃতি হয় if (condition) statement; else statement;

যৌগিক ব্লক সহ একটি যদি-তবে-অন্য বিবৃতি হয় statement if (condition) {statements} else {statements}

এটি স্পষ্টত আজেবাজে কথা।

আমি সেই অনুযায়ী লিখি if (condition) {statements} else {statements};যা যৌক্তিক এবং যুক্তিসঙ্গত।

যদি জাভার ডিজাইনাররা যদি এটির মতো আচরণ করতে চান তবে অন্যথায় একটি নালিকা বিবৃতি অনুসরণ করে, আমি ঠিক আছি। এটি যদি তাদের খুশি করে তবে তা তাদের সুখী করুন।


এটা if (condition) {statements;} else {statements;}। এছাড়াও, জাভা ;এর পরে প্রয়োজন নেই সম্পর্কে বেশ সামঞ্জস্যপূর্ণ }। কীভাবে মানব ভাষাগুলি প্রায়শই একটি চিহ্নের চিহ্ন দিয়ে ইতিমধ্যে সমাপ্ত হওয়া একটি বাক্য শেষে একটি সময় স্থির করে না। (অবশ্যই, আছে !?বা ?!শেষা w শ, কিন্তু সেসব শুধু অনুমান হয় , interrobang চরিত্র ।)
8bittree

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