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

สัญกรณ์สำหรับแสดงค่าคงที่ในซอร์สโค้ด

5
เหตุใด [] จึงเร็วกว่ารายการ ()
ฉันเพิ่งเทียบความเร็วการประมวลผลของ[]และlist()และรู้สึกประหลาดใจที่พบว่า[]วิ่งเกินสามครั้งเร็วlist()กว่า ฉันทำการทดสอบเดียวกันด้วย{}และdict()ผลลัพธ์ก็เหมือนกันจริง: []และ{}ทั้งคู่ใช้เวลาประมาณ 0.128 วินาที / ล้านรอบในขณะที่list()และdict()ใช้เวลาประมาณ 0.428 วินาที / ล้านรอบ ทำไมนี้ ทำ[]และ{}(และอาจจะ()และ''ด้วย) ทันทีส่งกลับสำเนาของบางตัวอักษรหุ้นที่ว่างเปล่าในขณะที่ลูกน้องอย่างชัดเจนชื่อของพวกเขา ( list(), dict(), tuple(), str()) อย่างเต็มที่ไปเกี่ยวกับการสร้างวัตถุหรือไม่ว่าพวกเขาเป็นจริงมีองค์ประกอบ? ฉันไม่รู้ว่าทั้งสองวิธีต่างกันอย่างไร แต่ฉันชอบที่จะรู้ ฉันไม่พบคำตอบในเอกสารหรือบน SO และการค้นหาวงเล็บว่างเปล่ากลายเป็นปัญหามากกว่าที่ฉันคาดไว้ ฉันได้ผลลัพธ์ตามกำหนดเวลาโดยการโทรtimeit.timeit("[]")และtimeit.timeit("list()")และtimeit.timeit("{}")และtimeit.timeit("dict()")เพื่อเปรียบเทียบรายการและพจนานุกรมตามลำดับ ฉันใช้ Python 2.7.9 เมื่อเร็ว ๆ นี้ฉันค้นพบ " ทำไมถ้า True ช้ากว่าถ้า 1? " ที่เปรียบเทียบประสิทธิภาพของif Trueการif 1และดูเหมือนว่าจะได้สัมผัสกับสถานการณ์ตามตัวอักษรและทั่วโลกที่คล้ายกัน บางทีมันก็คุ้มค่าที่จะพิจารณาเช่นกัน

4
ฉันสามารถใช้เครื่องหมายคำพูดคู่ในสตริงตัวอักษรต่อคำได้หรือไม่?
ในสตริงตัวอักษรคำต่อคำ (@ "foo") ใน C # เครื่องหมายแบ็กสแลชจะไม่ถือว่าเป็น escapes ดังนั้นการทำ \ "เพื่อให้ได้อัญประกาศคู่ไม่ทำงานมีวิธีใดที่จะได้รับการเสนอราคาซ้ำในสตริงตัวอักษรคำต่อคำ ? สิ่งนี้เข้าใจไม่ได้: string foo = @"this \"word\" is escaped";

7
ชุดตัวอักษรว่างเปล่า?
[] = ว่างเปล่า list () = ว่างเปล่า tuple {} = ว่างเปล่า dict มีสัญกรณ์ที่คล้ายกันสำหรับที่ว่างเปล่าset? หรือฉันจะต้องเขียนset()?
460 python  set  literals 

6
คุณจะแสดงตัวอักษรไบนารีใน Python อย่างไร
คุณจะแสดงจำนวนเต็มเป็นเลขฐานสองด้วยตัวอักษร Python ได้อย่างไร ฉันสามารถค้นหาคำตอบสำหรับ hex ได้อย่างง่ายดาย: >>> 0x12AF 4783 >>> 0x100 256 และแปด: >>> 01267 695 >>> 0100 64 คุณใช้ตัวอักษรเพื่อแสดงไบนารีใน Python อย่างไร สรุปคำตอบ Python 2.5 และรุ่นก่อนหน้า: สามารถแสดงไบนารีโดยใช้int('01010101111',2)แต่ไม่ใช่แบบตัวอักษร Python 2.5 และรุ่นก่อนหน้า: ไม่มีวิธีในการแสดงตัวอักษรไบนารี งูหลาม 2.6 เบต้า: คุณสามารถทำเช่นดังนั้น: หรือ0b11001110B1100111 Python 2.6 beta: จะอนุญาต0o27หรือ0O27(อักขระตัวที่สองคือตัวอักษร O) เพื่อแทนค่าฐานแปด Python 3.0 beta: เหมือนกับ 2.6 แต่จะไม่อนุญาตให้ใช้027ไวยากรณ์ที่เก่ากว่าสำหรับ octals อีกต่อไป


3
ตัวดำเนินการ >>> = ใน C คืออะไร
ได้รับจากเพื่อนร่วมงานเป็นตัวต่อฉันไม่สามารถเข้าใจได้ว่าโปรแกรม C นี้รวบรวมและใช้งานได้อย่างไร >>>=ตัวดำเนินการนี้และ1P1ตัวอักษรแปลกคืออะไร ฉันได้ทำการทดสอบใน Clang และ GCC แล้ว ไม่มีคำเตือนและผลลัพธ์คือ "???" #include <stdio.h> int main() { int a[2]={ 10, 1 }; while( a[ 0xFULL?'\0':-1:>>>=a<:!!0X.1P1 ] ) printf("?"); return 0; }

10
ทำไมอินสแตนซ์ของคืนเท็จสำหรับตัวอักษรบางตัว?
"foo" instanceof String //=> false "foo" instanceof Object //=> false true instanceof Boolean //=> false true instanceof Object //=> false false instanceof Boolean //=> false false instanceof Object //=> false // the tests against Object really don't make sense ตัวอักษร Array และ Object literals ตรงกัน ... [0,1] instanceof Array //=> …


8
Java: ฉันจะได้รับตัวอักษรในชั้นเรียนจากประเภททั่วไปได้อย่างไร
โดยปกติแล้วฉันเคยเห็นคนใช้ตัวอักษรในชั้นเรียนเช่นนี้: Class<Foo> cls = Foo.class; แต่ถ้าเป็นประเภททั่วไปเช่นรายชื่อจะเป็นอย่างไร วิธีนี้ใช้ได้ผลดี แต่มีคำเตือนเนื่องจากรายการควรได้รับการกำหนดพารามิเตอร์: Class<List> cls = List.class ดังนั้นทำไมไม่เพิ่ม<?>? นี่ทำให้เกิดข้อผิดพลาดประเภทไม่ตรงกัน: Class<List<?>> cls = List.class ฉันคิดบางอย่างเช่นนี้จะทำงานได้ แต่นี่เป็นเพียงข้อผิดพลาดทางไวยากรณ์ธรรมดา ol: Class<List<Foo>> cls = List<Foo>.class ฉันจะได้รับClass<List<Foo>>แบบคงที่ได้อย่างไรเช่นใช้ตัวอักษรของชั้นเรียน? ฉันสามารถใช้@SuppressWarnings("unchecked")เพื่อกำจัดคำเตือนที่เกิดจากการใช้ List แบบไม่มีพารามิเตอร์ในตัวอย่างแรกClass<List> cls = List.classแต่ฉันไม่ต้องการ ข้อเสนอแนะใด ๆ
194 java  generics  class  literals 

4
สัญกรณ์ตามตัวอักษรสำหรับพจนานุกรมใน C #?
ขณะนี้ฉันมี WebSocket ระหว่าง JavaScript และเซิร์ฟเวอร์ที่ตั้งโปรแกรมใน C # ใน JavaScript ฉันสามารถส่งผ่านข้อมูลได้อย่างง่ายดายโดยใช้อาเรย์แบบเชื่อมโยง: var data = {'test': 'val', 'test2': 'val2'}; เพื่อเป็นตัวแทนวัตถุข้อมูลนี้ในฝั่งเซิร์ฟเวอร์ฉันใช้ a Dictionary<string, string>แต่มัน 'พิมพ์แพงกว่าใน JavaScript: Dictionary<string, string> data = new Dictionary<string,string>(); data.Add("test", "val"); data.Add("test2", "val2"); มีสัญกรณ์ตามตัวอักษรสำหรับอาร์เรย์ที่เชื่อมโยง / Dictionarys ใน C # หรือไม่?
182 c#  dictionary  literals 

12
เหตุใดตัวอักษรสตริงดิบของ Python จึงไม่สามารถลงท้ายด้วยเครื่องหมายทับขวาเดียวได้
เทคนิคใดเลขคี่ของ backslashes ที่อธิบายไว้ในเอกสาร >>> r'\' File "<stdin>", line 1 r'\' ^ SyntaxError: EOL while scanning string literal >>> r'\\' '\\\\' >>> r'\\\' File "<stdin>", line 1 r'\\\' ^ SyntaxError: EOL while scanning string literal ดูเหมือนว่า parser สามารถจัดการแบ็กสแลชในสายอักขระดิบเป็นตัวอักษรปกติได้ (ไม่ใช่ว่าเป็นสตริงที่เกี่ยวกับอะไร) แต่ฉันอาจขาดอะไรบางอย่างที่ชัดเจน

4
รูปแบบตัวอักษรสั้น / ยาว / int C #?
ใน C / C # / ฯลฯ คุณสามารถบอกคอมไพเลอร์ที่ว่าจำนวนที่แท้จริงไม่ได้เป็นสิ่งที่มันดูเหมือนจะเป็น (เช่น. floatแทนdouble, unsigned longแทนint: var d = 1.0; // double var f = 1.0f; // float var u = 1UL; // unsigned long เป็นต้น ใครช่วยชี้ให้ฉันดูรายการเหล่านี้ ฉันมองหาเฉพาะคำต่อท้ายสำหรับหรือshortInt16


6
ฉันจะเขียนลิเทอรัลสั้น ๆ ใน C ++ ได้อย่างไร
คำถามพื้นฐานมาก: ฉันจะเขียนshortตัวอักษรใน C ++ ได้อย่างไร ฉันรู้สิ่งต่อไปนี้: 2 เป็น int 2U เป็น unsigned int 2L คือ long 2LL คือ long long 2.0f คือ float 2.0 คือ double '\2'คือchar. แต่ฉันจะเขียนshortตัวอักษรได้อย่างไร? ฉันลองแล้ว2Sแต่นั่นทำให้คอมไพเลอร์เตือน
120 c++  literals 

2
ฉันจะทำลิเทอรัล * int64 ใน Go ได้อย่างไร
ฉันมีประเภทโครงสร้างที่มี*int64ฟิลด์ type SomeType struct { SomeField *int64 } เมื่อถึงจุดหนึ่งในรหัสของฉันฉันต้องการประกาศตัวอักษรของสิ่งนี้ (เช่นเมื่อฉันรู้ว่าค่าควรเป็น 0 หรือชี้ไปที่ 0 คุณก็รู้ว่าฉันหมายถึงอะไร) instance := SomeType{ SomeField: &0, } ... ยกเว้นไม่ได้ผล ./main.go:xx: cannot use &0 (type *int) as type *int64 in field value ก็เลยลองทำตามนี้ instance := SomeType{ SomeField: &int64(0), } ... แต่ก็ไม่ได้ผลเช่นกัน ./main.go:xx: cannot take the address of int64(0) …
116 pointers  go  struct  literals 

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