রুবিতে `not` এবং`! Between এর মধ্যে পার্থক্য


102

আমি কোথাও পড়াটি মনে করি notএবং !এটি আলাদাভাবে মূল্যায়ন করা হয় এবং ডকুমেন্টেশনে এটি খুঁজে পাচ্ছি না। তারা কি সমার্থক?


উত্তর:


145

এগুলি প্রায় সমার্থক, তবে বেশ নয়। পার্থক্য যে !তুলনায় উচ্চতর প্রাধান্য রয়েছে not, অনেক মত &&এবং ||বেশী প্রাধান্য হয় andএবং or

!সমস্ত অপারেটরগুলির সর্বাধিক নজরে রয়েছে এবং নিম্নতমগুলির মধ্যে notএকটিতে আপনি রুবি ডক্সে পুরো টেবিলটি খুঁজে পেতে পারেন ।

উদাহরণ হিসাবে বিবেচনা করুন:

!true && false
=> false

not true && false
=> true

প্রথম উদাহরণে, !হয়েছে সর্বোচ্চ প্রাধান্য, তাই আপনি কার্যকরভাবে বলছে false && false
দ্বিতীয় উদাহরণে, notএর চেয়ে কম অগ্রাধিকার রয়েছে true && false, সুতরাং এটি " falseথেকে " পরিবর্তন true && falseকরে true

সাধারণ নির্দেশিকাটি মনে হয় যে আপনার !ব্যবহারের নির্দিষ্ট কারণ না থাকলে আপনার আটকে থাকা উচিত not!রুবিতে অন্যান্য ভাষার মতো একইরকম আচরণ করা হয় এবং এটি তুলনায় "কম আশ্চর্যজনক" not


6
অবহেলিত শর্তাদি পড়তে সহজ করতে আমি অতীতে 'না' ব্যবহার করেছি। অর্থাত শর্তসাপেক্ষীর সম্পূর্ণতা যদি উপেক্ষা করা উচিত তবে আমি 'না' বরং '!' ব্যবহার করে স্বাচ্ছন্দ্য বোধ করি। আমার কোডটি ইংলিশের মতো পড়লে আমার পছন্দ হয়
jaydel

@Jaydel আপনি কি unlessএই ক্ষেত্রে ব্যবহার করতে পারেন ?
জ্যাকব

4
@ জ্যাকব, হ্যাঁ, অবশ্যই unlessরুবি বিশ্বে ঠিক পছন্দসই নয়। সাধারণ sensক্যমত্যটি হ'ল !বেশিরভাগ পরিস্থিতিতে ঠিক একইভাবে কাজ করার সময় এটি ঠিক পথে চলে যায় । আমি নিশ্চিত যে এমন কিছু ক্ষেত্রে রয়েছে যেখানে না থেকে বেশি অভিব্যক্তি প্রকাশিত হতে পারে তবে আমি স্পষ্টভাবে জানি।
ব্রেনান

4
আমি অসন্তুষ্ট যে অসন্তুষ্ট unlessহয়। আমাদের একমত হওয়ার সবচেয়ে কাছের জিনিসটি অন্যথায় বলে।
আদম লাসেক

4
কী আশ্চর্য notহতে পারে তার একটি উদাহরণ কেবল ভাগ করে নিতে চেয়েছিলেন । পাইথনে, আমি মাঝে মাঝে বুলিয়ানগুলিকে ভেরিয়েবলগুলিকে অ্যাসেট-স্টেটমেন্টগুলি আরও সহজ করে তোলে assign এর অর্থ প্যাটার্নটি ব্যবহার করা হতে পারে x = not y, যেখানে y জটিল কিছু। রুবিতে, x = !yকাজ করে তবে x = not yপায় syntax error, unexpected tIDENTIFIER, expecting '('। প্রাধান্য অর্ডার মানে হল এই কাজের জন্য নিয়োগ অপ ডান প্রায় প্রথম বন্ধনী দরকার: x = (not y)
এস। কি

13

notঅপারেটরটিকে বোঝার একটি সহজ উপায় not true && falseহ'ল সমতুল্য হিসাবে দেখে!(true && false)

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