আমি কোথাও পড়াটি মনে করি notএবং !এটি আলাদাভাবে মূল্যায়ন করা হয় এবং ডকুমেন্টেশনে এটি খুঁজে পাচ্ছি না। তারা কি সমার্থক?
উত্তর:
এগুলি প্রায় সমার্থক, তবে বেশ নয়। পার্থক্য যে !তুলনায় উচ্চতর প্রাধান্য রয়েছে not, অনেক মত &&এবং ||বেশী প্রাধান্য হয় andএবং or।
!সমস্ত অপারেটরগুলির সর্বাধিক নজরে রয়েছে এবং নিম্নতমগুলির মধ্যে notএকটিতে আপনি রুবি ডক্সে পুরো টেবিলটি খুঁজে পেতে পারেন ।
উদাহরণ হিসাবে বিবেচনা করুন:
!true && false
=> false
not true && false
=> true
প্রথম উদাহরণে, !হয়েছে সর্বোচ্চ প্রাধান্য, তাই আপনি কার্যকরভাবে বলছে false && false।
দ্বিতীয় উদাহরণে, notএর চেয়ে কম অগ্রাধিকার রয়েছে true && false, সুতরাং এটি " falseথেকে " পরিবর্তন true && falseকরে true।
সাধারণ নির্দেশিকাটি মনে হয় যে আপনার !ব্যবহারের নির্দিষ্ট কারণ না থাকলে আপনার আটকে থাকা উচিত not। !রুবিতে অন্যান্য ভাষার মতো একইরকম আচরণ করা হয় এবং এটি তুলনায় "কম আশ্চর্যজনক" not।
unlessএই ক্ষেত্রে ব্যবহার করতে পারেন ?
unlessরুবি বিশ্বে ঠিক পছন্দসই নয়। সাধারণ sensক্যমত্যটি হ'ল !বেশিরভাগ পরিস্থিতিতে ঠিক একইভাবে কাজ করার সময় এটি ঠিক পথে চলে যায় । আমি নিশ্চিত যে এমন কিছু ক্ষেত্রে রয়েছে যেখানে না থেকে বেশি অভিব্যক্তি প্রকাশিত হতে পারে তবে আমি স্পষ্টভাবে জানি।
unlessহয়। আমাদের একমত হওয়ার সবচেয়ে কাছের জিনিসটি অন্যথায় বলে।
notহতে পারে তার একটি উদাহরণ কেবল ভাগ করে নিতে চেয়েছিলেন । পাইথনে, আমি মাঝে মাঝে বুলিয়ানগুলিকে ভেরিয়েবলগুলিকে অ্যাসেট-স্টেটমেন্টগুলি আরও সহজ করে তোলে assign এর অর্থ প্যাটার্নটি ব্যবহার করা হতে পারে x = not y, যেখানে y জটিল কিছু। রুবিতে, x = !yকাজ করে তবে x = not yপায় syntax error, unexpected tIDENTIFIER, expecting '('। প্রাধান্য অর্ডার মানে হল এই কাজের জন্য নিয়োগ অপ ডান প্রায় প্রথম বন্ধনী দরকার: x = (not y)।