"এবং" এবং রুবিতে&& এর মধ্যে পার্থক্য?


উত্তর:


348

andহিসাবে একই &&কিন্তু কম প্রাধান্য । তারা উভয়ই শর্ট সার্কিট মূল্যায়ন ব্যবহার করে

সতর্কতা: andএমনকি =আপনার সাধারণত এড়াতে চাইলে এর চেয়েও কম প্রাধান্য রয়েছে andand" ডাবল রেন্ডার ত্রুটিগুলি এড়ানো " এর অধীনে রেল গাইডে কখন ব্যবহার করা উচিত তার একটি উদাহরণ পাওয়া যাবে ।


50
কোনওটি সাধারণত ব্যবহার করা উচিত তা নির্দিষ্ট করে দেওয়া ভাল ধারণা হবে &&, তবে andকেবল খুব নির্দিষ্ট ক্ষেত্রে ব্যবহার করা উচিত।
মার্ক-আন্দ্রে লাফোর্টুন

10
এখানে আরও একটি ভাল ব্যাখ্যা: devblog.avdi.org/2010/08/02/ using-and-and-or-in-ruby
অ্যান্ড্রু মার্শাল

17
অ্যান্ড্রু মার্শাল লিংক থেকে: "চিন্তা আরেকটি উপায় সম্পর্কে andএকটি বিপরীত হিসাবে ifবিবৃতি পরিবর্তক: next if widget = widgets.popহয়ে widget = widgets.pop and nextযে এটি নির্বাণ একটি দুর্দান্ত উপায়, সত্যিই এটি তৈরি করা।" ক্লিক করুন "আমার মাথা (এবং। orএকটি বিপরীত মত হল unlessপরিবর্তক।)
GMA

1
এই উত্তরটি টেডম্যানের উত্তরের বিশদ সহ একত্রিত করুন এবং আপনি পুরো ছবিটি পাবেন।
সরগস

5
অ্যাভিডি কখন ব্যবহার করতে হবে এবং বনাম ও&& এ তার আপডেট আপডেট করেছে। মূলত 'এবং' এবং 'বা' বা নিয়ন্ত্রণ প্রবাহের জন্য তাদের নিম্ন অগ্রাধিকারের জন্য ব্যবহার করুন। devblog.avdi.org/2014/08/26/…
এরিক সি

238

ব্যবহারিক পার্থক্য হ'ল বাঁধাই শক্তি, যা আপনি যদি এটির জন্য প্রস্তুত না হন তবে অদ্ভুত আচরণের দিকে পরিচালিত করতে পারে:

foo = :foo
bar = nil

a = foo and bar
# => nil
a
# => :foo

a = foo && bar
# => nil
a
# => nil

a = (foo and bar)
# => nil
a
# => nil

(a = foo) && bar
# => nil
a
# => :foo

একই জিনিস ||এবং জন্য কাজ করে or


2
a = foo and bar এবং (a = foo ) && bar প্রমাণ করে যে andতুলনায় কম নজির আছে &&
সরগস

আমি এটি পাই না: "ফু ও বার" কী বোঝায়?
বিকেএসপুরগাঁও

a = foo and barসমতূল্য (a = :foo) and nil। যেহেতু অ্যাসাইনমেন্টটি একটি যুক্তিযুক্ত সত্যের মান ( :foo) প্রদান করে তারপরে দ্বিতীয় অংশটি মূল্যায়ন করে, যা ব্যর্থ হয়, ফিরে আসে nil
tadman

61

রুবি স্টাইল গাইড এটা ভাল বলেছেন আমি আর করতে পারে:

&& / || ব্যবহার করুন বুলিয়ান এক্সপ্রেশন এবং / অথবা নিয়ন্ত্রণ প্রবাহের জন্য। (থাম্বের বিধি: যদি আপনাকে বাইরের বন্ধনী ব্যবহার করতে হয় তবে আপনি ভুল অপারেটর ব্যবহার করছেন))

# boolean expression
if some_condition && some_other_condition
  do_something
end

# control flow
document.saved? or document.save!

53
প্রকৃতপক্ষে গাইড এখন এড়াতে and/ orসম্পূর্ণরূপে বলছে এবং তাদের কোনও বক্তব্য থাকতে পারে। প্রায়শই নিয়ন্ত্রণ প্রবাহে তাদের ব্যবহার আরও স্পষ্টভাবে if/ unlessঅপারেটরদের সাথে যাইহোক লিখতে পারে (যেমন document.save! unless document.saved?)
ইয়ারিন

আপনি ট্রোলিং না করায় @akostadinov: রুবি স্টাইল গাইডটি রুবির নির্মাতারা লিখেছেন না। রুবি ইউকিহিরো মাতসুমোটো এবং অন্যরা তৈরি করেছিলেন, অন্যদিকে রুবি স্টাইল গাইড মূলত বোজিদার বাতসভ ছিলেন।
অ্যান্ড্রু গ্রিম

2
@ অ্যান্ড্রুগ্রিম, ধন্যবাদ, জেনে ভাল। ট্রোলিংয়ের জন্য দুঃখিত তবে আমি রুবি বাস্তবতার কিছু দিক নিয়ে আন্তরিকভাবে বিভ্রান্ত। একটি জিনিস নিশ্চিত - প্রতিটি রুবি প্রকল্পের কোডবেস বজায় রাখার জন্য কঠোর স্টাইলের নীতি দরকার needs
akostadinov

37

||এবং &&প্রোগ্রামিং ভাষাগুলিতে বুলিয়ান অপারেটরদের কাছ থেকে আপনি যে নজিরটি আশা করেন তার সাথে আবদ্ধ হন ( &&খুব শক্তিশালী, ||কিছুটা কম শক্তিশালী)।

and এবং or নিম্নতর প্রাধান্য আছে।

উদাহরণস্বরূপ, বিপরীতে ||, orএর চেয়ে কম অগ্রাধিকার রয়েছে =:

> a = false || true
 => true 
> a
 => true 
> a = false or true
 => true 
> a
 => false

অনুরূপভাবে, অসদৃশ &&, andএছাড়াও কম প্রাধান্য রয়েছে =:

> a = true && false
 => false 
> a
 => false 
> a = true and false
 => false 
> a
 => true 

আরো কি, অসদৃশ এর &&এবং ||, andএবং orবাঁধাই করা সমান প্রাধান্য সঙ্গে

> !puts(1) || !puts(2) && !puts(3)
1
 => true
> !puts(1) or !puts(2) and !puts(3)
1
3
 => true 
> !puts(1) or (!puts(2) and !puts(3))
1
 => true

দুর্বল-বাঁধাই andএবং orনিয়ন্ত্রণ-প্রবাহের উদ্দেশ্যে কার্যকর হতে পারে: দেখুন http://devblog.avdi.org/2010/08/02/ using- and - and -or-in- ruby/


2
"বিপরীতে ||, orএর চেয়ে কম অগ্রাধিকার রয়েছে =" ... এখন এটি আরও অর্থবোধ করে, ধন্যবাদ!
স্টিপ শার্প

18

andতুলনায় কম নজির আছে &&

তবে একটি নিরস্তর ব্যবহারকারীর জন্য সমস্যাগুলি দেখা দিতে পারে যদি এটি অন্যান্য অপারেটরদের সাথে ব্যবহার করা হয় যাদের নজরে রয়েছে এর উদাহরণস্বরূপ, অ্যাসাইনমেন্ট অপারেটর:

def happy?() true; end
def know_it?() true; end

todo = happy? && know_it? ? "Clap your hands" : "Do Nothing"

todo
# => "Clap your hands"

todo = happy? and know_it? ? "Clap your hands" : "Do Nothing"

todo
# => true

1
আপনাকে ধন্যবাদ, তবে "ও" এর থেকে "এবং" এর প্রাধান্য কেমন?
বিকেএসপুরজন

2
@ বি কে এসপুরজন রুবিতে অপারেটর অগ্রাধিকারের আদেশের তালিকার জন্য এখানে দেখুন ।
thutt

5

andনিম্নতর প্রাধান্য রয়েছে, বেশিরভাগ ক্ষেত্রে আমরা এটিকে নিয়ন্ত্রণ-প্রবাহ সংশোধক হিসাবে ব্যবহার করি if:

next if widget = widgets.pop

হয়ে

widget = widgets.pop and next

এর জন্য or:

raise "Not ready!" unless ready_to_rock?

হয়ে

ready_to_rock? or raise "Not ready!"

আমি ব্যবহার করতে পছন্দ করি ifতবে তা নয় and, কারণ ifআরও বোধগম্য, তাই আমি কেবল উপেক্ষা করি andএবং or

"পড়ুন ব্যাবহার" এবং "এবং" অথবা "রুবি মধ্যে আরও তথ্যের জন্য"।


0

আমি জানি না এটি রুবি অভিপ্রায় কিনা বা এটি কোনও বাগ থাকলে নীচে এই কোডটি ব্যবহার করে দেখুন। এই কোডটি রুবি সংস্করণ ২.২.১ এ চালিত হয়েছিল এবং এটি একটি লিনাক্স সিস্টেমে ছিল।

puts 1 > -1 and 257 < 256
# => false

puts 1 > -1 && 257 < 256
# => true

1
@ জাকুব আর্নল্ড সারকাসম কখনই সহায়ক নয়। উদাহরণ কখনও কখনও হয়।
ববরোডস

পছন্দ করেছেন এখানে 7 টি উত্তর রয়েছে যার মধ্যে 6 টি ইতিমধ্যে উদাহরণ রয়েছে।
জাকুব আর্নল্ড

1
@ জাকুব আরনল্ড আমি এখনও এই উদাহরণটি সহায়ক বলে মনে করেছি।
ববরোডস

আমি পাশাপাশি বিজোড় ফলাফল পাচ্ছি। v1 = সত্য এবং মিথ্যা পি v1 # => অ্যাপ.আরবি: সত্য, আইআরবি: মিথ্যা ভি 2 = সত্য && মিথ্যা পি ভি 2 # => অ্যাপ্লিকেশন: মিথ্যা, আইআরবি: মিথ্যা 1> -1 && 257 <256 # => app.rb: মিথ্যা, আইআরবি: মিথ্যা
ধনী_এফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.