คำถามติดแท็ก conditional-operator

ตัวดำเนินการตามเงื่อนไขเป็นตัวดำเนินการด้านที่เป็นส่วนหนึ่งของไวยากรณ์สำหรับนิพจน์เงื่อนไขพื้นฐานในภาษาโปรแกรมต่างๆ มักเรียกกันทั่วไปว่าตัวดำเนินการ ternary หรือ inline if ภาษาที่แตกต่างกันมีไวยากรณ์ที่แตกต่างกันสำหรับโครงสร้างเดียวกัน แต่ทั้งหมดเลือกระหว่างหนึ่งในสองตัวเลือกตามเงื่อนไข

8
ส่งคืน null เป็น int ที่ได้รับอนุญาตกับผู้ประกอบการที่ประกอบไปด้วยสามส่วน แต่ไม่ใช่ถ้ามีคำสั่ง
ลองดูโค้ด Java อย่างง่ายในตัวอย่างต่อไปนี้: public class Main { private int temp() { return true ? null : 0; // No compiler error - the compiler allows a return value of null // in a method signature that returns an int. } private int same() { if (true) { return null; // …

5
รายการความเข้าใจบรรทัดเดียว: if-else ชุดรูปแบบ
มันเพิ่มเติมเกี่ยวกับไวยากรณ์ความเข้าใจรายการหลาม ฉันมีรายการความเข้าใจที่สร้างรายการเลขคี่ของช่วงที่กำหนด: [x for x in range(1, 10) if x % 2] สิ่งนี้ทำให้ตัวกรอง - ฉันมีรายการแหล่งที่มาซึ่งฉันจะลบเลขคู่ออก ( if x % 2) ฉันต้องการใช้บางอย่างเช่นถ้าเป็นอย่างอื่นที่นี่ รหัสต่อไปนี้ล้มเหลว: >>> [x for x in range(1, 10) if x % 2 else x * 100] File "<stdin>", line 1 [x for x in range(1, 10) if x % …

27
จะตรวจสอบได้อย่างไรว่าสตริงของฉันเท่ากับโมฆะ?
ฉันต้องการดำเนินการบางอย่างเฉพาะในกรณีที่สตริงของฉันมีค่าที่มีความหมาย ดังนั้นฉันจึงลองทำสิ่งนี้ if (!myString.equals("")) { doSomething } และนี่ if (!myString.equals(null)) { doSomething } และนี่ if ( (!myString.equals("")) && (!myString.equals(null))) { doSomething } และนี่ if ( (!myString.equals("")) && (myString!=null)) { doSomething } และนี่ if ( myString.length()>0) { doSomething } และในทุกกรณีโปรแกรมของฉันdoSomethingทั้งๆที่ความจริงที่ว่าสตริงของฉันว่างเปล่า nullมันเท่ากับ ดังนั้นมีอะไรผิดปกติกับที่? เพิ่ม: ฉันพบสาเหตุของปัญหา ตัวแปรถูกประกาศเป็นสตริงและด้วยเหตุนี้การnullกำหนดให้กับตัวแปรนี้จึงถูกเปลี่ยนเป็น"null"! ดังนั้นใช้if (!myString.equals("null"))งานได้

16
วิธีที่ไม่ซ้ำในการใช้ตัวดำเนินการ Null Coalescing [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ ฉันรู้วิธีมาตรฐานในการใช้ตัวดำเนินการรวม Null ใน C # คือการตั้งค่าเริ่มต้น string nobody = null; string somebody = "Bob Saget"; string anybody = ""; anybody = nobody ?? "Mr. T"; // returns Mr. T anybody = somebody ?? "Mr. T"; // returns "Bob Saget" แต่มีอะไรอีกบ้างที่สามารถ??ใช้เพื่อ? ดูเหมือนว่าจะไม่มีประโยชน์เท่าโอเปอร์เรเตอร์ที่ประกอบไปด้วยนอกจากจะกระชับและอ่านง่ายกว่า: nobody …

16
Java คืออะไร: ตัวดำเนินการที่เรียกและทำหน้าที่อะไร?
ฉันได้ทำงานกับ Java สองสามปี แต่จนถึงเมื่อเร็ว ๆ นี้ฉันไม่ได้ทำงานข้ามโครงสร้างนี้: int count = isHere ? getHereCount(index) : getAwayCount(index); นี่อาจเป็นคำถามที่ง่ายมาก แต่มีคนอธิบายได้ไหม ฉันจะอ่านมันได้อย่างไร ฉันค่อนข้างแน่ใจว่าฉันรู้ว่ามันทำงานอย่างไร ถ้าisHereเป็นจริงgetHereCount()เรียกว่า ถ้าisHereเป็นเท็จgetAwayCount()เรียกว่า แก้ไข? สิ่งก่อสร้างนี้เรียกว่าอะไร?

5
ปัญหาประเภท Nullable กับ?: ผู้ประกอบการตามเงื่อนไข
มีคนอธิบายได้ไหมว่าทำไมสิ่งนี้ถึงใช้งานได้ใน C # .NET 2.0: Nullable<DateTime> foo; if (true) foo = null; else foo = new DateTime(0); ... แต่นี่ไม่ใช่: Nullable<DateTime> foo; foo = true ? null : new DateTime(0); แบบฟอร์มหลังทำให้ฉันมีข้อผิดพลาดในการคอมไพล์ "ไม่สามารถระบุชนิดของนิพจน์เงื่อนไขได้เนื่องจากไม่มีการแปลงโดยนัยระหว่าง '<null>' และ 'System.DateTime' ไม่ใช่ว่าฉันไม่สามารถใช้รูปแบบเดิมได้ แต่รูปแบบที่สองนั้นสอดคล้องกับส่วนที่เหลือของรหัสของฉันมากกว่า

4
ทุบตีถ้า [เท็จ]; ผลตอบแทนจริง
รับการเรียนรู้ทุบตีในสัปดาห์นี้และวิ่งเข้าไปในอุปสรรค์ #!/bin/sh if [ false ]; then echo "True" else echo "False" fi สิ่งนี้จะออกจริงทุกครั้งแม้ว่าเงื่อนไขจะดูเหมือนจะบ่งบอกเป็นอย่างอื่น หากฉันถอดขายึดออก[]แล้วก็ใช้งานได้ แต่ฉันไม่เข้าใจว่าทำไม

3
ผู้ประกอบการที่ประกอบไปด้วยกิ่งไม้ชวเลขและถ้าอื่นแล้ว
ทวิกรองรับผู้ประกอบการที่สามหรือไม่? ฉันต้องการตรรกะตามเงื่อนไขบางอย่างเช่น: {%if ability.id in company_abilities %} <tr class="selected"> {%else%} <tr> {%endif%} แต่ใช้ชวเลขในทวิก

7
เหตุใด“ sizeof (a? true: false)” จึงให้เอาต์พุตสี่ไบต์
ฉันมีโค้ดเล็ก ๆ เกี่ยวกับตัวsizeofดำเนินการกับตัวดำเนินการที่เกี่ยวข้อง: #include <stdio.h> #include <stdbool.h> int main() { bool a = true; printf("%zu\n", sizeof(bool)); // Ok printf("%zu\n", sizeof(a)); // Ok printf("%zu\n", sizeof(a ? true : false)); // Why 4? return 0; } เอาท์พุท ( GCC ): 1 1 4 // Why 4? แต่ที่นี่, printf("%zu\n", sizeof(a ? true : …

4
บูลีนตัวดำเนินการตามเงื่อนไขและการทำกล่องอัตโนมัติ
ทำไมถึงโยน NullPointerException public static void main(String[] args) throws Exception { Boolean b = true ? returnsNull() : false; // NPE on this line. System.out.println(b); } public static Boolean returnsNull() { return null; } ในขณะที่สิ่งนี้ไม่ public static void main(String[] args) throws Exception { Boolean b = true ? null : false; …

1
twig: หากมีหลายเงื่อนไข
ดูเหมือนว่าฉันมีปัญหากับคำสั่ง twig if {%if fields | length > 0 || trans_fields | length > 0 -%} ข้อผิดพลาดคือ: Unexpected token "punctuation" of value "|" ("name" expected) in ฉันไม่เข้าใจว่าทำไมมันถึงใช้ไม่ได้มันเหมือนกับว่ากิ่งไม้หายไปกับท่อทั้งหมด ฉันได้ลองแล้ว: {% set count1 = fields | length %} {% set count2 = trans_fields | length %} {%if count1 > 0 || count2 …

5
เหตุใดตัวดำเนินการด้านท้ายที่มีเครื่องหมายจุลภาคจึงประเมินเพียงนิพจน์เดียวในกรณีจริง
ฉันกำลังเรียนรู้ C ++ ด้วยหนังสือ C ++ Primer และหนึ่งในแบบฝึกหัดในหนังสือเล่มนี้คือ: อธิบายว่านิพจน์ต่อไปนี้ใช้ทำอะไร: someValue ? ++x, ++y : --x, --y เรารู้อะไรบ้าง? เราทราบดีว่าตัวดำเนินการ ternary มีลำดับความสำคัญสูงกว่าตัวดำเนินการลูกน้ำ ด้วยตัวดำเนินการไบนารีสิ่งนี้ค่อนข้างเข้าใจได้ง่าย แต่สำหรับตัวดำเนินการด้านท้ายฉันกำลังดิ้นรนเล็กน้อย ด้วยตัวดำเนินการไบนารี "มีลำดับความสำคัญสูงกว่า" หมายความว่าเราสามารถใช้วงเล็บรอบนิพจน์ที่มีลำดับความสำคัญสูงกว่าและจะไม่เปลี่ยนแปลงการดำเนินการ สำหรับตัวดำเนินการ ternary ฉันจะทำ: (someValue ? ++x, ++y : --x, --y) ทำให้เกิดรหัสเดียวกันอย่างมีประสิทธิภาพซึ่งไม่ได้ช่วยฉันในการทำความเข้าใจว่าคอมไพเลอร์จะจัดกลุ่มโค้ดอย่างไร อย่างไรก็ตามจากการทดสอบกับคอมไพเลอร์ C ++ ฉันรู้ว่านิพจน์นั้นรวบรวมและฉันไม่รู้ว่าตัว:ดำเนินการใดสามารถยืนได้ด้วยตัวเอง ดังนั้นคอมไพเลอร์ดูเหมือนจะตีความตัวดำเนินการ ternary อย่างถูกต้อง จากนั้นฉันดำเนินการโปรแกรมด้วยสองวิธี: #include <iostream> int main() { bool …

13
ฉันจะใช้ตัวดำเนินการ ternary (? :) ใน PHP เป็นชวเลขสำหรับ“ if / else” ได้อย่างไร
จากตัวอย่างจากหน้านี้ฉันมีตัวอย่างโค้ดที่ใช้งานได้และไม่ทำงานด้านล่าง รหัสการทำงานโดยใช้ifคำสั่ง: if (!empty($address['street2'])) echo $address['street2'].'<br />'; รหัสที่ไม่ทำงานโดยใช้ตัวดำเนินการ ternary: $test = (empty($address['street2'])) ? 'Yes <br />' : 'No <br />'; // Also tested this (empty($address['street2'])) ? 'Yes <br />' : 'No <br />'; อัปเดต หลังจากคำแนะนำของ Brian ฉันพบว่าการสะท้อนให้$testผลลัพธ์ที่คาดหวัง ผลงานต่อไปนี้อย่างจับใจ! echo (empty($storeData['street2'])) ? 'Yes <br />' : 'No <br />';

7
ลำดับความสำคัญของตัวดำเนินการกับตัวดำเนินการ Javascript Ternary
ดูเหมือนว่าฉันจะพันหัวของฉันไปรอบ ๆ ส่วนแรกของรหัสนี้ (+ =) ร่วมกับตัวดำเนินการด้านท้ายไม่ได้ h.className += h.className ? ' error' : 'error' วิธีที่ฉันคิดว่ารหัสนี้ใช้งานได้มีดังต่อไปนี้: h.className = h.className + h.className ? ' error' : 'error' แต่นั่นไม่ถูกต้องเพราะนั่นทำให้เกิดข้อผิดพลาดในคอนโซลของฉัน ดังนั้นคำถามของฉันคือฉันจะเชื่อมต่อรหัสนี้อย่างถูกต้องได้อย่างไร?

8
CSS“ และ” และ“ หรือ”
ฉันมีปัญหาค่อนข้างใหญ่เพราะฉันต้องการกายวิภาคศาสตร์จากการจัดรูปแบบอินพุตบางประเภท ฉันมีสิ่งที่ชอบ: .registration_form_right input:not([type="radio") { //Nah. } แต่ฉันไม่ต้องการจัดรูปแบบช่องทำเครื่องหมายด้วย ฉันพยายามแล้ว: .registration_form_right input:not([type="radio" && type="checkbox"]) .registration_form_right input:not([type="radio" && "checkbox"]) .registration_form_right input:not([type="radio") && .registration_form_right input:not(type="checkbox"]) ใช้&&อย่างไร? และฉันจะต้องใช้||เร็ว ๆ นี้และฉันคิดว่าการใช้งานจะเหมือนเดิม ปรับปรุง: ผมก็ยังไม่ทราบวิธีการใช้||และ&&ถูกต้อง ฉันไม่พบสิ่งใดในเอกสาร W3

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.