জাভাতে কোনও বুলিয়ানকে উপেক্ষা করার মতো আরও ভাল উপায় কি যদি অন্য কিছু হয়?
if (theBoolean) {
theBoolean = false;
} else {
theBoolean = true;
}
জাভাতে কোনও বুলিয়ানকে উপেক্ষা করার মতো আরও ভাল উপায় কি যদি অন্য কিছু হয়?
if (theBoolean) {
theBoolean = false;
} else {
theBoolean = true;
}
উত্তর:
theBoolean = !theBoolean;
!!bool == !(!(bool)) == bool
।
--
অপারেটরকে সংজ্ঞায়িত করে (প্রকৃতপক্ষে, দু'জন ++
অপারেটর সহ ), তবে !!
অপারেটরের সংজ্ঞা দেয় না । আপনি চাইলে -(-(integer))
দুটি -
অক্ষরের মধ্যে সাদা স্থান ব্যবহার করতে পারেন । তবে সাদা স্থান নির্বিশেষে !!
দুটি !
অপারেটর হিসাবে পার্স ।
theBoolean ^= true;
আপনার ভেরিয়েবলটি চারটি বর্ণের চেয়ে বেশি হলে কম কীস্ট্রোক হয়
সম্পাদনা করুন : গুগল অনুসন্ধান পদ হিসাবে ব্যবহার করার সময় কোডটি কার্যকর ফলাফলগুলিতে ফিরে আসে। উপরের কোডটি দেয় না। যারা এটি প্রয়োজন জন্য এটা , bitwise XOR যাও হিসাবে এখানে বর্ণিত ।
theBoolean = !theBoolean;
বা এর চেয়ে 12% বেশি দ্রুতtheBoolean = theBoolean ? false : true;
"সুস্পষ্ট" উপায় (বেশিরভাগ লোকের জন্য)
theBoolean = !theBoolean;
"সংক্ষিপ্ততম" উপায় (বেশিরভাগ সময়)
theBoolean ^= true;
"সবচেয়ে দৃশ্যমান" উপায় (সবচেয়ে অনিশ্চিতভাবে)
theBoolean = theBoolean ? false : true;
theMethod( theBoolean ^= true );
যেহেতু অ্যাসাইনমেন্ট অপারেটর সর্বদা নির্ধারিত হয়েছে তা ফিরিয়ে দেয়, এটি বিটওয়াইস অপারেটরের মাধ্যমে মানটি টগল করবে এবং তারপরে পদ্ধতি কলটিতে ব্যবহৃত নতুন সঞ্চিত মানটি ফিরিয়ে দেবে।
C
, তবে Java
এটিতে বুলিয়ান এবং পূর্ণসংখ্যার মিশ্রণ অনুমোদিত নয় (এছাড়াও while(1)
জাভাতে যেমন জিনিসগুলি সম্ভব নয়)।
আপনি যদি বুলিয়ান নুল মানগুলি ব্যবহার করেন এবং সেগুলি মিথ্যা বলে মনে করেন তবে এটি ব্যবহার করে দেখুন:
static public boolean toggle(Boolean aBoolean) {
if (aBoolean == null) return true;
else return !aBoolean;
}
আপনি যদি বুলিয়ান নুল মান হস্তান্তর না করেন তবে এটি ব্যবহার করে দেখুন:
static public boolean toggle(boolean aBoolean) {
return !aBoolean;
}
এগুলি সবচেয়ে পরিষ্কার কারণ তারা পদ্ধতিটির স্বাক্ষরে অভিপ্রায়টি দেখায়, তুলনায় পড়তে সহজ ! অপারেটর, এবং সহজেই ডিবাগ করা যায়।
ব্যবহার
boolean bTrue = true
boolean bFalse = false
boolean bNull = null
toggle(bTrue) // == false
toggle(bFalse) // == true
toggle(bNull) // == true
অবশ্যই, আপনি যদি গ্রোভি বা এমন ভাষা ব্যবহার করেন যা এক্সটেনশন পদ্ধতিগুলিকে মঞ্জুরি দেয় তবে আপনি একটি এক্সটেনশন নিবন্ধন করতে পারেন এবং কেবল:
Boolean b = false
b = b.toggle() // == true
Boolean
এবং এটি পদ্ধতির মধ্যে সত্যই টগল করুন (তবে এখনও কিছুটা অস্পষ্ট)।
"জাভা ইনভার্ট বুলিয়ান ফাংশন" অনুসন্ধান করার সময় এই উত্তরটি উপস্থিত হয়েছিল। নীচের উদাহরণটি ব্র্যাচিং লজিকের কারণে কিছু স্থির বিশ্লেষণ সরঞ্জামকে ব্যর্থ হওয়া থেকে বিরত করবে। আপনার যদি কোনও বুলিয়ান উল্টাতে হয় এবং ব্যাপক ইউনিট পরীক্ষা না করে থাকে তবে এটি কার্যকর)
Boolean.valueOf(aBool).equals(false)
বা বিকল্পভাবে:
Boolean.FALSE.equals(aBool)
অথবা
Boolean.FALSE::equals
Boolean.FALSE::equals
সামান্য ল্যাম্বদা লেখার পরিবর্তে কোনও ম্যাপিং ফাংশনটিতে যেতে পেরেছিলেন
যদি আপনি বিশেষভাবে পেশাদার কিছু না করে থাকেন তবে আপনি সর্বদা একটি ইউটিল ক্লাস ব্যবহার করতে পারেন। প্রাক্তন, শ্রেণীর জন্য একটি প্রকল্পের থেকে একটি ব্যবহার শ্রেণি।
public class Util {
public Util() {}
public boolean flip(boolean bool) { return !bool; }
public void sop(String str) { System.out.println(str); }
}
তারপরে একটি ইউটিল অবজেক্ট তৈরি করুন
Util u = new Util();
এবং জন্য কিছু রাখুনSystem.out.println( u.flip(bool) );
যদি আপনি একই জিনিসটি বারবার ব্যবহার করতে চান তবে একটি পদ্ধতি ব্যবহার করুন, এবং বিশেষত এটি যদি প্রকল্পগুলির মধ্যে থাকে তবে একটি ইউটিল ক্লাস তৈরি করুন। ডুনো শিল্পের মানটি তবে কী। (অভিজ্ঞ প্রোগ্রামাররা নির্দ্বিধায় আমাকে সংশোধন করতে পারেন)
ক্লাস BooleanUtils
একটি বুলিয়ান অবহেলা সমর্থন করে। আপনি এই শ্রেণিটি কমন্স-ল্যাং: কমন্স-ল্যাংয়ে খুঁজে পাবেন
BooleanUtils.negate(theBoolean)
আগে:
boolean result = isresult();
if (result) {
result = false;
} else {
result = true;
}
পরে:
boolean result = isresult();
result ^= true;