คำถามติดแท็ก operators

ผู้ประกอบการเป็นสัญลักษณ์ที่เกิดขึ้นในเกือบทุกภาษาการเขียนโปรแกรมและการเข้ารหัสสำหรับการคำนวณและการเปรียบเทียบข้อมูล

4
การใช้ตัวดำเนินการเปรียบเทียบผ่าน 'tuple' และ 'tie' เป็นความคิดที่ดีหรือไม่?
(หมายเหตุ: tupleและtieสามารถนำมาจาก Boost หรือ C ++ 11) เมื่อเขียนโครงสร้างขนาดเล็กที่มีเพียงสององค์ประกอบบางครั้งฉันมักจะเลือก a std::pairเนื่องจากมีการทำสิ่งสำคัญทั้งหมดสำหรับประเภทข้อมูลนั้นแล้วเช่นoperator<การจัดลำดับที่เข้มงวด - อ่อนแอ . ข้อเสียคือชื่อตัวแปรที่ค่อนข้างไร้ประโยชน์ แม้ว่าฉันจะสร้างสิ่งนั้นขึ้นมาเองtypedefแต่ฉันก็จำไม่ได้ว่า 2 วันต่อมาว่าfirstอะไรsecondคืออะไรโดยเฉพาะอย่างยิ่งถ้าทั้งสองเป็นประเภทเดียวกัน สิ่งนี้จะแย่ลงไปอีกสำหรับสมาชิกมากกว่าสองคนเนื่องจากการทำรังนั้นpairค่อนข้างแย่มาก อีกทางเลือกหนึ่งคือไฟล์tupleไม่ว่าจะจาก Boost หรือ C ++ 11 แต่ก็ไม่ได้ดูดีและชัดเจนขึ้น ดังนั้นฉันจึงกลับไปเขียนโครงสร้างด้วยตัวเองรวมถึงตัวดำเนินการเปรียบเทียบที่จำเป็น เนื่องจากโดยเฉพาะอย่างยิ่งoperator<อาจเป็นเรื่องยุ่งยากฉันจึงคิดที่จะหลีกเลี่ยงความยุ่งเหยิงทั้งหมดนี้โดยอาศัยการดำเนินการที่กำหนดไว้สำหรับtuple: ตัวอย่างoperator<เช่นสำหรับการสั่งซื้อที่เข้มงวด - อ่อนแอ: bool operator<(MyStruct const& lhs, MyStruct const& rhs){ return std::tie(lhs.one_member, lhs.another, lhs.yet_more) < std::tie(rhs.one_member, rhs.another, rhs.yet_more); } ( tieทำให้tupleของT&การอ้างอิงจากการขัดแย้งผ่าน.) แก้ไข : …

6
“ x ไม่อยู่ใน y” หรือ“ ไม่ใช่ x ใน y”
เมื่อทดสอบการเป็นสมาชิกเราสามารถใช้: x not in y หรืออีกทางหนึ่ง: not x in y สามารถมีบริบทที่เป็นไปได้มากสำหรับการแสดงออกนี้ขึ้นอยู่กับและx yอาจใช้สำหรับการตรวจสอบสตริงย่อยการเป็นสมาชิกรายการการมีอยู่ของคีย์ dict เป็นต้น ทั้งสองรูปแบบเทียบเท่ากันเสมอหรือไม่? มีไวยากรณ์ที่ต้องการหรือไม่?

6
ตัวดำเนินการทิลเดอร์ใน C
ฉันเคยเห็นตัวดำเนินการตัวหนอนที่ใช้ในอัลกอริทึมการแฮชของ ELF และฉันก็อยากรู้ว่ามันทำอะไร (รหัสมาจาก Eternally Confused ) unsigned elf_hash ( void *key, int len ) { unsigned char *p = key; unsigned h = 0, g; int i; for ( i = 0; i < len; i++ ) { h = ( h << 4 ) + p[i]; g = …
97 c++  c  operators 


13
อย่างไร !! ~ (ไม่ใช่เครื่องหมายทิลเดอร์ / แบงแบงทิลเดอร์) เปลี่ยนผลลัพธ์ของการเรียกเมธอดอาร์เรย์ 'มี / รวม' อย่างไร
หากคุณอ่านความคิดเห็นในinArrayหน้าjQuery ที่นี่มีคำประกาศที่น่าสนใจ: !!~jQuery.inArray(elm, arr) ตอนนี้ฉันเชื่อว่าเครื่องหมายอัศเจรีย์คู่จะแปลงผลลัพธ์เป็นประเภทbooleanโดยมีค่าเป็นtrue. สิ่งที่ฉันไม่เข้าใจคือการใช้ตัวดำเนินการ tilde ( ~) ทั้งหมดนี้คืออะไร? var arr = ["one", "two", "three"]; if (jQuery.inArray("one", arr) > -1) { alert("Found"); } การปรับโครงสร้างifคำสั่ง: if (!!~jQuery.inArray("one", arr)) { alert("Found"); } ทำให้พังถล่ม: jQuery.inArray("one", arr) // 0 ~jQuery.inArray("one", arr) // -1 (why?) !~jQuery.inArray("one", arr) // false !!~jQuery.inArray("one", arr) // true -2ฉันยังพบว่าถ้าฉันใส่ตัวหนอนในหน้าผลที่ได้คือ …


9
Javascript: ตัวดำเนินการมากเกินไป
ฉันทำงานกับ JavaScript มาสองสามวันแล้วและมาถึงจุดที่ฉันต้องการโอเวอร์โหลดตัวดำเนินการสำหรับวัตถุที่ฉันกำหนดไว้ หลังจากการ จำกัด Google ในการค้นหาสิ่งนี้ดูเหมือนว่าคุณไม่สามารถทำสิ่งนี้ได้อย่างเป็นทางการ แต่ก็มีคนไม่กี่คนที่อ้างว่าวิธีการดำเนินการนี้ที่ยืดเยื้อมานาน โดยพื้นฐานแล้วฉันสร้างคลาส Vector2 และต้องการทำสิ่งต่อไปนี้: var x = new Vector2(10,10); var y = new Vector2(10,10); x += y; //This does not result in x being a vector with 20,20 as its x & y values. แต่ฉันต้องทำสิ่งนี้: var x = new Vector2(10,10); var y = …

6
ประสิทธิภาพของตัวดำเนินการ MySQL“ IN” บนจำนวนค่า (ใหญ่?)
ฉันได้ทดลองกับ Redis และ MongoDB เมื่อไม่นานมานี้และดูเหมือนว่ามักจะมีหลายกรณีที่คุณจะเก็บอาร์เรย์ของidไว้ใน MongoDB หรือ Redis ฉันจะติดกับ Redis สำหรับคำถามนี้ตั้งแต่ฉันถามเกี่ยวกับ MySQL ในการประกอบการ ฉันสงสัยว่านักแสดงเป็นอย่างไรในการแสดงรายการIDจำนวนมาก (300-3000) ในตัวดำเนินการ IN ซึ่งจะมีลักษณะดังนี้: SELECT id, name, price FROM products WHERE id IN (1, 2, 3, 4, ...... 3000) ลองนึกภาพง่ายๆอย่างตารางผลิตภัณฑ์และหมวดหมู่ซึ่งโดยปกติคุณอาจเข้าร่วมด้วยกันเพื่อรับผลิตภัณฑ์จากหมวดหมู่หนึ่งๆ ในตัวอย่างด้านบนคุณจะเห็นว่าภายใต้หมวดหมู่ที่กำหนดใน Redis ( category:4:product_ids) ฉันส่งคืนรหัสผลิตภัณฑ์ทั้งหมดจากหมวดหมู่ด้วยรหัส 4 และวางไว้ในSELECTข้อความค้นหาด้านบนภายในตัวINดำเนินการ นักแสดงเป็นอย่างไร? นี่คือสถานการณ์ "ขึ้นอยู่กับ" หรือไม่? หรือมีรูปธรรม "นี่คือ (ไม่) ยอมรับ" หรือ …

12
มี“ ตรงข้าม” กับตัวดำเนินการการรวมกันเป็นโมฆะหรือไม่? (…เป็นภาษาอะไร?)
การรวมกันเป็นโมฆะแปลได้คร่าวๆว่า return x, unless it is null, in which case return y ฉันมักจะต้องการ return null if x is null, otherwise return x.y ฉันสามารถใช้ return x == null ? null : x.y; ไม่เลว แต่nullตรงกลางมักรบกวนฉัน - ดูเหมือนฟุ่มเฟือย ฉันไม่ต้องการสิ่งที่ต้องการreturn x :: x.y;ซึ่งสิ่งที่ตามมาคือการประเมินเฉพาะในกรณีที่สิ่งที่นำหน้ามันไม่ได้เป็น::null ฉันเห็นว่านี่เกือบจะตรงข้ามกับการรวมกันเป็นโมฆะซึ่งผสมกับ terse, อินไลน์เช็คโมฆะ แต่ฉัน [ เกือบ ] แน่ใจว่าไม่มีตัวดำเนินการดังกล่าวใน C # มีภาษาอื่นที่มีตัวดำเนินการดังกล่าวหรือไม่? …

5
ฉันจะปัดเศษเป็นจำนวนเต็มใน JavaScript ได้อย่างไร
ฉันมีรหัสต่อไปนี้เพื่อคำนวณเปอร์เซ็นต์ที่แน่นอน: var x = 6.5; var total; total = x/15*100; // Result 43.3333333333 สิ่งที่ฉันต้องการได้ผลลัพธ์คือจำนวนที่แน่นอน43และถ้าผลรวม43.5ควรจะปัดเศษเป็น44 มีวิธีทำใน JavaScript หรือไม่?

12
เครื่องหมายโคลอน (:) ทำอะไรได้บ้าง?
เห็นได้ชัดว่าเครื่องหมายจุดคู่ถูกใช้ใน Java หลายวิธี ใครช่วยอธิบายว่ามันทำอะไร? ตัวอย่างเช่นที่นี่: String cardString = ""; for (PlayingCard c : this.list) // <-- { cardString += c + "\n"; } คุณจะเขียนfor-eachลูปนี้ด้วยวิธีอื่นอย่างไรเพื่อไม่ให้รวมเข้าด้วยกัน:?


14
มีตัวดำเนินการ C # IN หรือไม่?
ใน SQL คุณสามารถใช้ไวยากรณ์ต่อไปนี้: SELECT * FROM MY_TABLE WHERE VALUE_1 IN (1, 2, 3) มี C # เทียบเท่าหรือไม่? ดูเหมือนว่า IDE จะรู้จักคำว่า "in" แต่ดูเหมือนว่าฉันจะไม่พบข้อมูลใด ๆ เป็นไปได้ไหมที่จะทำสิ่งต่อไปนี้: int myValue = 1; if (myValue in (1, 2, 3)) // Do something แทน int myValue = 1; if (myValue == 1 || myValue == 2 …

6
ตัวดำเนินการตัวแปรเป็นไปได้หรือไม่?
มีวิธีทำสิ่งที่คล้ายกับวิธีใดวิธีหนึ่งต่อไปนี้: var1 = 10; var2 = 20; var operator = "<"; console.log(var1 operator var2); // returns true -- หรือ -- var1 = 10; var2 = 20; var operator = "+"; total = var1 operator var2; // total === 30


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