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

6
การประกาศและกำหนดค่าเริ่มต้นตัวแปรภายในสวิตช์ Java
ฉันมีคำถามบ้าๆเกี่ยวกับสวิตช์ Java int key = 2; switch (key) { case 1: int value = 1; break; case 2: value = 2; System.out.println(value); break; default: break; } กรณีที่ 1 - เมื่อkeyสองมันประสบความสำเร็จพิมพ์ค่าเป็น 2 กรณีที่ 2 - เมื่อฉันจะแสดงความคิดเห็นvalue = 2ในcase 2:มัน squawks บอกว่าค่าตัวแปรท้องถิ่นอาจจะไม่ได้รับการเริ่มต้น คำถาม: สถานการณ์ที่ 1: หากโฟลว์การดำเนินการไม่ไปที่case 1:(เมื่อ the key = 2) จะรู้ได้อย่างไรว่าประเภทของตัวแปรค่าเป็นintอย่างไร …


5
ฉันจะสร้าง initializer แบบกำหนดเองสำหรับคลาสย่อย UIViewController ใน Swift ได้อย่างไร
ขออภัยหากมีการถามก่อนหน้านี้ฉันได้ค้นหาหลายรอบและคำตอบมากมายมาจาก Swift betas ก่อนหน้านี้เมื่อสิ่งต่างๆแตกต่างออกไป ดูเหมือนจะหาคำตอบที่ชัดเจนไม่ได้ ฉันต้องการคลาสย่อยUIViewControllerและมีตัวเริ่มต้นที่กำหนดเองเพื่อให้ฉันตั้งค่าในโค้ดได้อย่างง่ายดาย ฉันประสบปัญหาในการทำสิ่งนี้ใน Swift ฉันต้องการinit()ฟังก์ชั่นที่ฉันสามารถใช้เพื่อส่งผ่านเฉพาะที่NSURLฉันจะใช้กับตัวควบคุมมุมมอง init(withImageURL: NSURL)ในใจของฉันมันมีลักษณะคล้าย ถ้าฉันเพิ่มฟังก์ชันนั้นจะขอให้ฉันเพิ่มinit(coder: NSCoder)ฟังก์ชันนั้น ฉันเชื่อว่าเป็นเพราะมันถูกทำเครื่องหมายในซูเปอร์คลาสด้วยrequiredคีย์เวิร์ด? ดังนั้นฉันต้องทำใน subclass? ฉันเพิ่มมัน: required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } ตอนนี้เป็นอย่างไร เริ่มต้นพิเศษของฉันถือเป็นconvenienceหนึ่งหรือไม่? หนึ่งที่กำหนด? ฉันเรียก super initializer หรือไม่? initializer จากคลาสเดียวกัน? ฉันจะเพิ่มโปรแกรมเริ่มต้นพิเศษของฉันลงในUIViewControllerคลาสย่อยได้อย่างไร

7
JavaFX: จะรับสเตจจากคอนโทรลเลอร์ระหว่างการเริ่มต้นได้อย่างไร?
ฉันต้องการจัดการกับเหตุการณ์บนเวที (เช่นการซ่อน) จากคลาสคอนโทรลเลอร์ของฉัน ดังนั้นสิ่งที่ฉันต้องทำคือเพิ่มผู้ฟังผ่านทาง ((Stage)myPane.getScene().getWindow()).setOn*whatIwant*(...); แต่ปัญหาคือการเริ่มต้นจะเริ่มขึ้นทันที Parent root = FXMLLoader.load(getClass().getResource("MyGui.fxml")); และก่อนหน้านี้ Scene scene = new Scene(root); stage.setScene(scene); ดังนั้น. getScene () จะคืนค่า null วิธีแก้ปัญหาเดียวที่ฉันพบด้วยตัวเองคือการเพิ่ม Listener ใน myPane.sceneProperty () และเมื่อมันไม่เป็นโมฆะฉันจะได้ฉากให้เพิ่มเป็น. windowProperty () my! goddamn! การจัดการผู้ฟังซึ่งในที่สุดฉันก็เรียกเวทีได้ และทุกอย่างจบลงด้วยการตั้งค่าผู้ฟังที่ต้องการให้เข้าร่วมกิจกรรมบนเวที ผมคิดว่ามีผู้ฟังมากเกินไป เป็นวิธีเดียวที่จะแก้ปัญหาของฉันได้หรือไม่?

10
ค่าเริ่มต้นในโครงสร้าง C
ฉันมีโครงสร้างข้อมูลดังนี้: Struct foo { รหัส int; เส้นทาง int; int backup_route; int current_route; } และฟังก์ชั่นที่เรียกว่า update () ที่ใช้เพื่อร้องขอการเปลี่ยนแปลง อัปเดต (42, dont_care, dont_care, new_route); นี่มันยาวมากและถ้าฉันเพิ่มบางอย่างลงในโครงสร้างฉันต้องเพิ่ม 'dont_care' ในทุก ๆ การเรียกเพื่ออัปเดต (... ) ฉันกำลังคิดที่จะส่ง Struct แทน แต่การกรอก struct ด้วย 'dont_care' ไว้ล่วงหน้านั้นน่าเบื่อยิ่งกว่าการสะกดคำในการเรียกฟังก์ชัน ฉันสามารถสร้างโครงสร้างที่ใดที่หนึ่งด้วยค่าเริ่มต้นของการไม่สนใจและตั้งค่าฟิลด์ที่ฉันสนใจหลังจากที่ฉันประกาศเป็นตัวแปรภายใน โครงสร้าง foo = {.id = 42, .current_route = new_route}; อัปเดต (& bar); …
93 c  initialization 

3
Uninitialized Object เทียบกับ Object ที่เริ่มต้นเป็น NULL
ฉันทำงานใน Java ฉันมักจะตั้งค่าวัตถุบางอย่างเช่นนี้: public class Foo { private SomeObject someName; // do stuff public void someMethod() { if (this.someName != null) { // do some stuff } } } คำถามคือ: someNameในตัวอย่างนี้เท่ากับnullหรือไม่ในขณะที่ฉันสามารถreliably for all objectsสมมติว่าการตรวจสอบค่า null อ็อบเจ็กต์ที่ไม่ได้กำหนดค่าเริ่มต้นจะถูกต้องหรือไม่

9
เริ่มต้น / รีเซ็ตโครงสร้างเป็นศูนย์ / ศูนย์
struct x { char a[10]; char b[20]; int i; char *c; char *d[10]; }; ฉันเติมโครงสร้างนี้แล้วใช้ค่า ในการทำซ้ำครั้งถัดไปฉันต้องการรีเซ็ตฟิลด์ทั้งหมดเป็น0หรือnullก่อนที่จะเริ่มใช้ซ้ำ ฉันจะทำเช่นนั้นได้อย่างไร? ใช้ได้memsetไหมหรือต้องผ่านสมาชิกทั้งหมดแล้วทำทีละคน

1
Array [n] vs Array [10] - การเริ่มต้นอาร์เรย์ด้วยตัวแปรเทียบกับจำนวนจริง
ฉันมีปัญหาต่อไปนี้กับรหัสของฉัน: int n = 10; double tenorData[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; ส่งกลับข้อผิดพลาดต่อไปนี้: error: variable-sized object 'tenorData' may not be initialized ในขณะที่ใช้double tenorData[10]งาน ใครทราบสาเหตุ?

12
ในกรณีนี้มีความแตกต่างระหว่างการใช้รายการเริ่มต้นของสมาชิกและการกำหนดค่าในตัวสร้างหรือไม่?
ภายในและเกี่ยวกับโค้ดที่สร้างขึ้นมีความแตกต่างระหว่าง: MyClass::MyClass(): _capacity(15), _data(NULL), _len(0) { } และ MyClass::MyClass() { _capacity=15; _data=NULL; _len=0 } ขอบคุณ ...

8
เป็นไปได้หรือไม่ที่จะเริ่มต้นตัวชี้ C เป็น NULL
ฉันเคยเขียนสิ่งต่างๆเช่น char *x=NULL; บนสมมติฐานที่ว่า char *x=2; จะสร้างcharตัวชี้ไปยังที่อยู่ 2 แต่ในบทช่วยสอนการเขียนโปรแกรม GNU Cบอกว่าจะint *my_int_ptr = 2;เก็บค่าจำนวนเต็ม2ไว้ที่ที่อยู่แบบสุ่มใด ๆ ก็ตามmy_int_ptrเมื่อมีการจัดสรร สิ่งนี้ดูเหมือนจะบอกเป็นนัยว่าของฉันเองchar *x=NULLกำลังกำหนดค่าของการNULLร่ายให้กับ a charคือที่อยู่แบบสุ่มบางส่วนในหน่วยความจำ ในขณะที่ #include <stdlib.h> #include <stdio.h> int main() { char *x=NULL; if (x==NULL) printf("is NULL\n"); return EXIT_SUCCESS; } ในความเป็นจริงพิมพ์ เป็นโมฆะ เมื่อฉันรวบรวมและเรียกใช้ฉันกังวลว่าฉันกำลังอาศัยพฤติกรรมที่ไม่ได้กำหนดหรืออย่างน้อยพฤติกรรมที่ไม่ระบุและฉันควรเขียน char *x; x=NULL; แทน.

7
ตอนนี้เรามี std :: array แล้วสิ่งที่ใช้สำหรับอาร์เรย์สไตล์ C คืออะไร?
std::arrayเหนือกว่าอาร์เรย์ C อย่างมาก และแม้ว่าฉันต้องการทำงานร่วมกับรหัสเดิมฉันก็สามารถstd::array::data()ใช้ได้ มีเหตุผลใดบ้างที่ฉันต้องการอาร์เรย์แบบเก่า?

12
กำหนดค่าเริ่มต้นสำหรับ UIViewController ใน Swift พร้อมการตั้งค่าอินเทอร์เฟซในสตอรี่บอร์ด
ฉันมีปัญหาในการเขียน init ที่กำหนดเองสำหรับคลาสย่อยของ UIViewController โดยพื้นฐานแล้วฉันต้องการส่งการอ้างอิงผ่านเมธอด init สำหรับ viewController แทนที่จะตั้งค่าคุณสมบัติโดยตรงเช่น viewControllerB.property = value ดังนั้นฉันจึงสร้าง init ที่กำหนดเองสำหรับ viewController ของฉันและเรียกใช้ super ที่กำหนด init(meme: Meme?) { self.meme = meme super.init(nibName: nil, bundle: nil) } อินเทอร์เฟซตัวควบคุมมุมมองอยู่ในสตอรีบอร์ดฉันยังทำให้อินเทอร์เฟซสำหรับคลาสที่กำหนดเองเป็นตัวควบคุมมุมมองของฉัน และ Swift จำเป็นต้องเรียกวิธีการเริ่มต้นนี้แม้ว่าคุณจะไม่ได้ทำอะไรภายในวิธีนี้ก็ตาม ไม่งั้นคอมเพลนจะบ่น ... required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } ปัญหาคือเมื่อฉันพยายามเรียกใช้ init ที่กำหนดเองของฉันโดยMyViewController(meme: meme)ไม่ได้ init คุณสมบัติใน …

3
C ++ 11 ช่วยให้สามารถเริ่มต้นในคลาสของสมาชิกที่ไม่คงที่และไม่ใช่ const อะไรเปลี่ยนไป?
ก่อน C ++ 11 เราสามารถดำเนินการเริ่มต้นในคลาสเฉพาะกับสมาชิก const คงที่ของประเภทอินทิกรัลหรือการแจงนับ Stroustrup กล่าวถึงสิ่งนี้ในคำถามที่พบบ่อยเกี่ยวกับ C ++โดยให้ตัวอย่างต่อไปนี้: class Y { const int c3 = 7; // error: not static static int c4 = 7; // error: not const static const float c5 = 7; // error: not integral }; และเหตุผลต่อไปนี้: เหตุใดจึงมีข้อ จำกัด ที่ไม่สะดวกเหล่านี้? โดยทั่วไปคลาสจะถูกประกาศในไฟล์ส่วนหัวและโดยทั่วไปไฟล์ส่วนหัวจะรวมอยู่ในหน่วยการแปลจำนวนมาก อย่างไรก็ตามเพื่อหลีกเลี่ยงกฎตัวเชื่อมโยงที่ซับซ้อน C …

7
เหตุใด Swift initializers จึงไม่สามารถเรียกตัวเริ่มต้นความสะดวกในซูเปอร์คลาสได้
พิจารณาสองคลาส: class A { var x: Int init(x: Int) { self.x = x } convenience init() { self.init(x: 0) } } class B: A { init() { super.init() // Error: Must call a designated initializer of the superclass 'A' } } ฉันไม่เห็นว่าเหตุใดจึงไม่อนุญาต ในที่สุด initializer ที่กำหนดของแต่ละคลาสจะถูกเรียกด้วยค่าที่ต้องการดังนั้นทำไมฉันต้องทำซ้ำตัวเองในB's initโดยการระบุค่าเริ่มต้นxอีกครั้งเมื่อความสะดวกinitในAจะทำได้ดี?

2
จะเริ่มต้นสมาชิกทั้งหมดของอาร์เรย์ให้มีค่าเดียวกันใน Swift ได้อย่างไร
ฉันมีอาร์เรย์ขนาดใหญ่ใน Swift ฉันต้องการเริ่มต้นสมาชิกทั้งหมดด้วยค่าเดียวกัน (เช่นอาจเป็นศูนย์หรือค่าอื่น ๆ ) แนวทางที่ดีที่สุดคืออะไร?

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