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

ในการเขียนโปรแกรม tuples คือ * ประเภทผลิตภัณฑ์ * แบบง่าย ๆ ซึ่งแสดงถึงคอลเล็กชันตามลำดับประเภท

11
สวย - พิมพ์ std :: tuple
นี่เป็นคำถามที่ตามมาจากคำถามก่อนหน้าของฉันเกี่ยวกับคอนเทนเนอร์ STL ที่มีการพิมพ์สวยซึ่งเราได้จัดการเพื่อพัฒนาโซลูชันที่หรูหราและใช้งานทั่วไป ในขั้นตอนต่อไปนี้ฉันต้องการรวมการพิมพ์ที่สวยงามสำหรับการstd::tuple<Args...>ใช้เทมเพลตตัวแปร (ดังนั้นนี่คือ C ++ 11 อย่างเคร่งครัด) สำหรับstd::pair<S,T>ฉันพูดง่ายๆ std::ostream & operator<<(std::ostream & o, const std::pair<S,T> & p) { return o << "(" << p.first << ", " << p.second << ")"; } โครงสร้างที่คล้ายคลึงกันสำหรับการพิมพ์ทูเพิลคืออะไร? ฉันได้ลองใช้การแยกสแต็กอาร์กิวเมนต์เทมเพลตหลายบิตส่งดัชนีไปรอบ ๆ และใช้ SFINAE เพื่อค้นหาว่าฉันอยู่ที่องค์ประกอบสุดท้าย แต่ไม่ประสบความสำเร็จ ฉันไม่เป็นภาระให้คุณด้วยรหัสที่เสียของฉัน หวังว่าคำอธิบายปัญหาจะตรงไปตรงมาเพียงพอ โดยพื้นฐานแล้วฉันต้องการพฤติกรรมต่อไปนี้: auto a = std::make_tuple(5, "Hello", -0.1); …

13
แปลงรายการ Scala เป็นทูเปิลหรือไม่
ฉันจะแปลงรายการที่มี (พูด) 3 องค์ประกอบเป็นทูเพิลขนาด 3 ได้อย่างไร ตัวอย่างเช่นสมมติว่าฉันมีval x = List(1, 2, 3)และฉันต้องการแปลงเป็น(1, 2, 3)ไฟล์. ฉันจะทำเช่นนี้ได้อย่างไร?
89 list  scala  tuples 

6
ส่งคืนค่าสองค่า Tuple vs 'out' vs 'struct'
พิจารณาฟังก์ชันที่คืนค่าสองค่า เราสามารถเขียน: // Using out: string MyFunction(string input, out int count) // Using Tuple class: Tuple<string, int> MyFunction(string input) // Using struct: MyStruct MyFunction(string input) ข้อใดเป็นแนวทางปฏิบัติที่ดีที่สุดและเพราะเหตุใด
88 c#  struct  tuples  out  value-type 

7
เหตุใด b + = (4,) ทำงานและ b = b + (4,) ไม่ทำงานเมื่อ b เป็นรายการ
ถ้าเราใช้b = [1,2,3]และถ้าเราลองทำ:b+=(4,) มันกลับb = [1,2,3,4]มา แต่ถ้าเราลองทำb = b + (4,)มันไม่ทำงาน b = [1,2,3] b+=(4,) # Prints out b = [1,2,3,4] b = b + (4,) # Gives an error saying you can't add tuples and lists ฉันคาดว่าb+=(4,)จะล้มเหลวเนื่องจากคุณไม่สามารถเพิ่มรายการและสิ่งอันดับ แต่มันใช้งานได้ ดังนั้นฉันจึงb = b + (4,)คาดหวังว่าจะได้รับผลลัพธ์ที่เหมือนกัน แต่ก็ไม่ได้ผล

4
Tuple slicing ไม่ส่งคืนวัตถุใหม่ซึ่งต่างจากการแบ่งส่วนรายการ
ใน Python (2 และ 3) เมื่อใดก็ตามที่เราใช้การแบ่งรายการมันจะส่งคืนวัตถุใหม่เช่น: l1 = [1,2,3,4] print(id(l1)) l2 = l1[:] print(id(l2)) เอาท์พุต >>> 140344378384464 >>> 140344378387272 หากสิ่งเดียวกันซ้ำกับ tuple วัตถุเดียวกันจะถูกส่งกลับเช่น: t1 = (1,2,3,4) t2 = t1[:] print(id(t1)) print(id(t2)) เอาท์พุต >>> 140344379214896 >>> 140344379214896 มันจะดีถ้ามีใครบางคนสามารถทำให้เข้าใจว่าทำไมสิ่งนี้ถึงเกิดขึ้นตลอดประสบการณ์ Python ของฉันฉันอยู่ภายใต้การแสดงผลชิ้นส่วนที่ว่างเปล่าส่งคืนวัตถุใหม่ ความเข้าใจของฉันคือการส่งคืนวัตถุเดียวกันกับสิ่งอันดับที่ไม่เปลี่ยนรูปและไม่มีจุดสร้างสำเนาใหม่ แต่ก็ไม่ได้กล่าวถึงในเอกสารทุกที่
12 python  list  tuples  slice  cpython 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.