লুয়ার ইনলাইন শর্তগুলি (a == খ? "হ্যাঁ": "না")?


95

লুয়ায় যে কোনও উপায়ে ইনলাইন অবস্থার ব্যবহার আছে?

যেমন:

print("blah: " .. (a == true ? "blah" : "nahblah"))

4
লুয়া-ব্যবহারকারীদের উইকিতে টের্নারি অপারেটর সম্পর্কে একটি চমৎকার নিবন্ধ রয়েছে , একসাথে সমস্যার ব্যাখ্যা এবং বেশ কয়েকটি সমাধানের জন্য।
মার্সিন

উত্তর:


126

নিশ্চিত:

print("blah: " .. (a and "blah" or "nahblah"))

32
উত্তরের জন্য +1। তবে আমি এটি কঠোরভাবে সত্য বলে মনে করি না - আমি এলইউএ ব্যবহার করি না - তবে আমি মনে করি এটি অন্যান্য ভাষায় টের্নারি অপারেটরের উপর এই পদ্ধতির সাথে একটি "ত্রুটি" ভাগ করে দেয়। কল্পনা করুন: (cond and false-value or x)এর ফলে xসব ক্ষেত্রেই এর ফলাফল আসবে ।

4
এটি কি পাশাপাশি A এর মানও মুদ্রণ করবে না?
কর্সিকা 21

11
@glowcoder No। "যদি এই মানটি মিথ্যা বা শূন্য হয় তবে সংযোগকারী অপারেটর (এবং) তার প্রথম যুক্তিটি ফিরিয়ে দেয়; অন্যথায়, এবং তার দ্বিতীয় তর্কটি প্রদান করে The ; অন্যথায়, বা তার দ্বিতীয় তর্কটি প্রদান করে। এবং এবং বা শর্ট-কাট মূল্যায়ন ব্যবহার করুন, অর্থাৎ দ্বিতীয় অপারেন্ড কেবল প্রয়োজন হলেই মূল্যায়ন করা হয় "- lua.org/manual/5.0/manual.html

4
@pst সঠিক যে অভিপ্রায়টি যদি a and false or trueএকই উত্তর দেয় না যে not a। এই আইডিয়ামটি সাধারণত এমন ক্ষেত্রে ব্যবহৃত হয় যেখানে পছন্দসই মানটি যদি aসত্য হয় না হতে পারে falseবা nil
RBerteig

4
আপনি যদি এই ফর্মটি ভেরিয়েবলগুলির সাথে ব্যবহার করে থাকেন তবে আপনি সম্ভবত ধরে নিতে পারেন যে দ্বিতীয় ভেরিয়েবলটি অ-মিথ্যা, যার অর্থ আপনার লেখা উচিত a and assert(b) or c
হোভারহেল

30

যদি a and t or fকাজটি আপনার পক্ষে কাজ করে না, আপনি সর্বদা একটি ফাংশন তৈরি করতে পারেন:

function ternary ( cond , T , F )
    if cond then return T else return F end
end

print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))

অবশ্যই, তারপরে আপনার কাছে ড্র ফিরে এসেছে যে টি এবং এফ সবসময় মূল্যায়ন করা হয় .... এটি পেতে আপনার বার্ষিক ফাংশনটিতে আপনাকে ফাংশন সরবরাহ করতে হবে, এবং এটি অনর্থক হতে পারে:

function ternary ( cond , T , F , ...)
    if cond then return T(...) else return F(...) end
end

print("blah: " .. ternary(a == true ,function() return "blah" end ,function() return "nahblah" end))

আমি মনে করি এটি বুলিয়ান ভেরিয়েবলগুলির জন্য সবচেয়ে দরকারী
ভায়াচ্লাভ

4
এই উত্তরটি শীর্ষের উত্তরের চেয়ে ভাল কারণ এটি বুলিয়ানদের পক্ষেও কাজ করে।
0 Добромиров

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