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

ชนิดข้อมูลประกอบด้วยชุดของค่าที่กำหนดชื่อเรียกว่าองค์ประกอบสมาชิกหรือตัวแจงนับของชนิด

8
จะรับค่าทั้งหมดจากคลาส python enum ได้อย่างไร?
ฉันใช้ไลบรารี Enum4 เพื่อสร้างคลาส enum ดังนี้: class Color(Enum): RED = 1 BLUE = 2 ฉันต้องการพิมพ์[1, 2]เป็นรายการที่ไหนสักแห่ง ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร?
155 python  enums 

5
ประกาศ enum ภายในคลาส
ในโค้ดต่อไปนี้Colorenum จะถูกประกาศภายในCarคลาสเพื่อ จำกัด ขอบเขตของ enum และพยายามที่จะไม่ "สร้างมลภาวะ" เนมสเปซส่วนกลาง class Car { public: enum Color { RED, BLUE, WHITE }; void SetColor( Car::Color color ) { _color = color; } Car::Color GetColor() const { return _color; } private: Car::Color _color; }; (1) นี่เป็นวิธีที่ดีในการ จำกัด ขอบเขตของColorenum หรือไม่? หรือฉันควรประกาศมันนอกCarชั้นเรียน แต่อาจจะอยู่ในเนมสเปซหรือ struct ของตัวเอง? ฉันเพิ่งมาข้ามบทความนี้ในวันนี้ซึ่งสนับสนุนหลังและกล่าวถึงจุดที่ดีบางอย่างเกี่ยวกับ …
151 c++  class  enums  namespaces  scope 

7
นิยาม Java Enum
ฉันคิดว่าฉันเข้าใจ Java generics ค่อนข้างดี แต่แล้วฉันก็พบสิ่งต่อไปนี้ใน java.lang.Enum: class Enum<E extends Enum<E>> มีคนอธิบายวิธีตีความพารามิเตอร์ประเภทนี้ได้ไหม คะแนนโบนัสสำหรับการให้ตัวอย่างอื่น ๆ ที่สามารถใช้พารามิเตอร์ประเภทที่คล้ายคลึงกันได้
151 java  generics  enums  crtp 

10
เครื่องหมายตัวหนอน (~) ในนิยาม enum คืออะไร
ฉันประหลาดใจเสมอที่แม้หลังจากใช้ C # ตลอดเวลานี้ฉันยังคงสามารถหาสิ่งที่ฉันไม่รู้เกี่ยวกับ ... ฉันพยายามค้นหาสิ่งนี้ทางอินเทอร์เน็ต แต่การใช้ "~" ในการค้นหาไม่ได้ผลสำหรับฉันเช่นกันและฉันก็ไม่พบสิ่งใดใน MSDN ด้วย (ไม่ต้องบอกว่ามันไม่มี) ฉันเห็นตัวอย่างโค้ดนี้เมื่อเร็ว ๆ นี้ตัวหนอน (~) หมายถึงอะไร /// <summary> /// Enumerates the ways a customer may purchase goods. /// </summary> [Flags] public enum PurchaseMethod { All = ~0, None = 0, Cash = 1, Check = 2, CreditCard = 4 …


7
ทำไม Java enum ตัวอักษรไม่สามารถมีพารามิเตอร์ประเภททั่วไปได้?
Java enums ยอดเยี่ยม ดังนั้นยาชื่อสามัญ แน่นอนว่าเราทุกคนรู้ถึงข้อ จำกัด ของอันหลังเนื่องจากการลบประเภท แต่มีสิ่งหนึ่งที่ฉันไม่เข้าใจว่าทำไมฉันไม่สามารถสร้าง enum เช่นนี้: public enum MyEnum<T> { LITERAL1<String>, LITERAL2<Integer>, LITERAL3<Object>; } พารามิเตอร์ประเภททั่วไป<T>ในทางกลับกันนั้นจะมีประโยชน์ในสถานที่ต่าง ๆ ลองนึกภาพพารามิเตอร์ประเภททั่วไปกับวิธีการ: public <T> T getValue(MyEnum<T> param); หรือแม้แต่ในชั้นเรียน Enum เอง: public T convert(Object o); ตัวอย่างที่ชัดเจนยิ่งขึ้น # 1 เนื่องจากตัวอย่างด้านบนอาจดูเป็นนามธรรมเกินไปสำหรับบางคนนี่เป็นตัวอย่างในชีวิตจริงมากขึ้นว่าทำไมฉันถึงต้องการทำสิ่งนี้ ในตัวอย่างนี้ฉันต้องการใช้ Enums เพราะจากนั้นฉันสามารถระบุชุดของคีย์คุณสมบัติที่ จำกัด ได้ ยาสามัญเพราะฉันสามารถมีความปลอดภัยประเภทระดับวิธีการสำหรับการจัดเก็บคุณสมบัติ public interface MyProperties { public <T> void …
148 java  generics  enums 

16
อะไรคือข้อดีของ Java enum กับคลาสที่มี public static final field?
ฉันคุ้นเคยกับ C # มาก แต่เริ่มทำงานได้มากขึ้นใน Java ฉันคาดหวังที่จะเรียนรู้ว่า enums ใน Java นั้นโดยทั่วไปเทียบเท่ากับใน C # แต่เห็นได้ชัดว่านี่ไม่ใช่กรณี ตอนแรกฉันรู้สึกตื่นเต้นที่ได้เรียนรู้ว่า Java enums อาจมีข้อมูลหลายชิ้นซึ่งดูเหมือนว่ามีประโยชน์มาก ( http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html ) อย่างไรก็ตามตั้งแต่นั้นฉันได้พบคุณสมบัติมากมายที่ขาดหายไปเล็กน้อยใน C # เช่นความสามารถในการกำหนดองค์ประกอบ enum ได้อย่างง่ายดายด้วยค่าที่แน่นอนและดังนั้นความสามารถในการแปลงจำนวนเต็มเป็น enum โดยไม่ต้องใช้ความพยายามอย่างมาก ( ie แปลงค่าจำนวนเต็มเป็นการจับคู่ Enum Java ) ดังนั้นคำถามของฉันคือ: มีประโยชน์กับ Java enums มากกว่าชั้นเรียนที่มีทุ่งสุดท้ายคงที่สาธารณะ? หรือว่าเป็นเพียงแค่ให้มีขนาดกะทัดรัดมากขึ้นไวยากรณ์? แก้ไข: ให้ฉันชัดเจนยิ่งขึ้น อะไรคือประโยชน์ของ Java enums มากกว่าชั้นเรียนที่มีกลุ่มของเขตข้อมูลสุดท้ายคงที่ประเภทเดียวกัน ? ตัวอย่างเช่นในตัวอย่างของดาวเคราะห์ที่ลิงก์แรกสิ่งที่เป็นข้อได้เปรียบของ enum …
147 java  enums 

14
Enums ใน Javascript กับ ES6
ฉันกำลังสร้างโปรเจ็กต์ Java เก่าใน Javascript และตระหนักว่าไม่มีวิธีที่ดีในการทำ enums ใน JS สิ่งที่ดีที่สุดที่ฉันสามารถทำได้คือ: const Colors = { RED: Symbol("red"), BLUE: Symbol("blue"), GREEN: Symbol("green") }; Object.freeze(Colors); การconstเก็บรักษาไม่ให้Colorsถูกกำหนดใหม่และการแช่แข็งจะป้องกันไม่ให้คีย์และค่ากลายพันธุ์ ฉันใช้ Symbols Colors.REDไม่เท่ากับ0หรืออย่างอื่นนอกจากตัวมันเอง สูตรนี้มีปัญหาหรือไม่? มีวิธีที่ดีกว่า? (ฉันรู้ว่าคำถามนี้ค่อนข้างซ้ำ แต่Q / As ก่อนหน้านี้ทั้งหมดค่อนข้างเก่าและ ES6 ทำให้เรามีความสามารถใหม่ ๆ ) แก้ไข: อีกวิธีหนึ่งที่เกี่ยวข้องกับปัญหาการทำให้เป็นอนุกรม แต่ฉันเชื่อว่ายังมีปัญหาเรื่องขอบเขต const enumValue = (name) => Object.freeze({toString: () => name}); const Colors …

6
คลาส C ++ enum สามารถมีเมธอดได้หรือไม่?
ฉันมีคลาส enum ที่มีค่าสองค่าและฉันต้องการสร้างวิธีที่รับค่าและส่งกลับค่าอื่น ฉันต้องการรักษาความปลอดภัยประเภท (นั่นคือเหตุผลที่ฉันใช้คลาส enum แทน enums) http://www.cplusplus.com/doc/tutorial/other_data_types/ไม่ได้พูดถึงวิธีการใด ๆ อย่างไรก็ตามฉันรู้สึกว่าคลาสทุกประเภทสามารถมีวิธีการได้
145 c++  methods  enums 

3
แผนภาพคลาส UML
ฉันกำลังสร้างแผนภาพคลาส แอตทริบิวต์ของคลาสเป็นการแจงนับ ฉันจะทำแบบนี้ได้อย่างไร โดยปกติคุณจะทำสิ่งนี้: - name : string แต่เราจะทำสิ่งนี้กับ enum ได้อย่างไร
145 class  enums  uml  diagram 

9
เป็นไปได้หรือไม่ที่จะใช้ Swift's Enum ใน Obj-C
ฉันพยายามแปลงคลาส Obj-C ของฉันเป็น Swift และคลาส Obj-C อื่น ๆ ยังคงใช้ enum ในคลาสที่แปลงแล้ว ฉันค้นหาในเอกสารเผยแพร่ล่วงหน้าและไม่พบหรืออาจพลาด มีวิธีใช้ Swift enum ใน Obj-C Class หรือไม่? หรือลิงค์ไปยังเอกสารของปัญหานี้หรือไม่? นี่คือวิธีที่ฉันประกาศ enum ของฉันในรหัส Obj-C เก่าและรหัส Swift ใหม่ รหัส Obj-C เก่าของฉัน: typedef NS_ENUM(NSInteger, SomeEnum) { SomeEnumA, SomeEnumB, SomeEnumC }; @interface SomeClass : NSObject ... @end Swift Code ใหม่ของฉัน: enum SomeEnum: NSInteger …
145 objective-c  enums  swift 

6
แปลงสตริงเป็น Enum ใน Python
ฉันสงสัยว่าวิธีที่ถูกต้องในการแปลง (deserializing) สตริงเป็นคลาส Enum ของ Python คืออะไร ดูเหมือนgetattr(YourEnumType, str)จะได้ผล แต่ฉันไม่แน่ใจว่าปลอดภัยเพียงพอหรือไม่ เพื่อให้เจาะจงมากขึ้นฉันต้องการแปลง'debug'สตริงเป็นอ็อบเจ็กต์ Enum ดังนี้: class BuildType(Enum): debug = 200 release = 400

21
แปลงเป้าหมาย -c typedef ให้เทียบเท่ากับสตริง
สมมติว่าฉันมี typedef ประกาศในไฟล์. h ของฉันเช่น: typedef enum { JSON, XML, Atom, RSS } FormatType; ฉันต้องการสร้างฟังก์ชั่นที่แปลงค่าตัวเลขของ typedef เป็นสตริง ตัวอย่างเช่นหากข้อความ[self toString:JSON]ถูกส่ง มันจะส่งคืน 'JSON' ฟังก์ชันจะมีลักษณะดังนี้: -(NSString *) toString:(FormatType)formatType { //need help here return []; } บังเอิญถ้าฉันลองไวยากรณ์นี้ [self toString:FormatType.JSON]; เพื่อส่งค่า typedef ไปยังเมธอดฉันได้รับข้อผิดพลาด ฉันพลาดอะไรไป
141 c  objective-c  enums  typedef 


7
ขนาดของ enum ใน C คืออะไร?
ฉันกำลังสร้างชุดค่า enum แต่ฉันต้องการค่า enum แต่ละตัวที่มีความกว้าง 64 บิต ถ้าฉันจำได้อย่างถูกต้องโดยทั่วไป Enum จะมีขนาดเท่ากันกับ int แต่ฉันคิดว่าฉันอ่านที่ไหนสักแห่ง (อย่างน้อยใน GCC) คอมไพเลอร์สามารถทำให้ enum ความกว้างใด ๆ ที่พวกเขาต้องการเพื่อรักษาค่าของพวกเขา เป็นไปได้ไหมที่จะมี enum ที่กว้าง 64 บิต?
140 c  enums 

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