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

ประเภทที่ไม่เปลี่ยนรูปซึ่งอาจมีค่าหรือข้อมูลอ้างอิง แต่ละอินสแตนซ์ของประเภทนี้มีค่าหรือการอ้างอิงที่ไม่ใช่ค่าว่างหรือไม่มีอะไรเลย (ซึ่งในกรณีนี้เราบอกว่าการอ้างอิงนั้น "ไม่มี" ไม่มีการกล่าวว่า "มีค่าว่าง")

23
ตรวจสอบสตริงว่าเป็นศูนย์และว่างเปล่า
มีวิธีตรวจสอบสตริงสำหรับnilและ""ใน Swift หรือไม่? ใน Rails ฉันสามารถใช้blank()เพื่อตรวจสอบ ขณะนี้ฉันมีสิ่งนี้ แต่ดูเหมือนว่าจะมากเกินไป: if stringA? != nil { if !stringA!.isEmpty { ...blah blah } }

8
Swift: Guard let vs if let
ฉันได้อ่านเกี่ยวกับ Optionals ใน Swift และฉันได้เห็นตัวอย่างที่if letใช้ตรวจสอบว่าตัวเลือกนั้นมีค่าหรือไม่และในกรณีที่เป็นเช่นนั้นให้ทำบางอย่างกับค่าที่ไม่ได้ใส่ อย่างไรก็ตามฉันได้เห็นว่าใน Swift 2.0 guard letมักใช้คำหลักเป็นส่วนใหญ่ ฉันสงสัยว่าif letถูกลบออกจาก Swift 2.0 หรือยังคงสามารถใช้งานได้ ฉันควรเปลี่ยนโปรแกรมของฉันที่มีif letถึงguard let?

6
เหตุใด java.util.Optional จึงไม่สามารถต่ออนุกรมได้วิธีการทำให้วัตถุเป็นอนุกรมกับช่องดังกล่าว
คลาส Enum สามารถต่ออนุกรมได้ดังนั้นจึงไม่มีปัญหาในการทำให้วัตถุเป็นอนุกรมกับ enums อีกกรณีคือที่คลาสมีฟิลด์ของคลาส java.util.Optional ในกรณีนี้จะเกิดข้อยกเว้นต่อไปนี้: java.io.NotSerializableException: java.util.Optional วิธีจัดการกับคลาสดังกล่าวจะทำให้เป็นอนุกรมได้อย่างไร เป็นไปได้ไหมที่จะส่งวัตถุดังกล่าวไปยัง Remote EJB หรือผ่าน RMI? นี่คือตัวอย่าง: import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.Optional; import org.junit.Test; public class SerializationTest { static class My implements Serializable { private static final long serialVersionUID = 1L; Optional<Integer> value = Optional.empty(); public …

9
พารามิเตอร์ทางเลือกเริ่มต้นในฟังก์ชัน Swift
เมื่อฉันตั้งค่าfirstThingเป็นค่าเริ่มต้นnilสิ่งนี้จะใช้งานได้โดยไม่มีค่าเริ่มต้นของnilฉันได้รับข้อผิดพลาดว่ามีพารามิเตอร์ที่ขาดหายไปเมื่อเรียกใช้ฟังก์ชัน การพิมพ์Int?ฉันคิดว่ามันทำให้เป็นทางเลือกโดยมีค่าเริ่มต้นnilเป็นฉันใช่ไหม และถ้าเป็นเช่นนั้นทำไมจึงไม่ทำงานหากไม่มี= nil? func test(firstThing: Int? = nil) { if firstThing != nil { print(firstThing!) } print("done") } test()
108 swift  function  optional 

1
การตกแต่งตัวแปรที่รวดเร็วด้วย“?” (เครื่องหมายคำถาม) และ“!” (เครื่องหมายตกใจ)
ฉันเข้าใจว่าใน Swift ตัวแปรทั้งหมดจะต้องตั้งค่าด้วยค่าและโดยการใช้ optionals เราสามารถตั้งค่าตัวแปรที่จะตั้งค่าเป็นค่าnilเริ่มต้นได้ สิ่งที่ฉันไม่เข้าใจคือการตั้งค่าตัวแปรด้วย a !กำลังทำอะไรอยู่เพราะฉันรู้สึกว่า "คลาย" ค่าจากตัวเลือกนี้ ฉันคิดว่าเมื่อทำเช่นนั้นคุณรับประกันได้ว่ามีค่าที่จะแกะในตัวแปรนั้นซึ่งเป็นสาเหตุที่ IBActions และคุณเห็นว่าใช้ พูดง่ายๆก็คือตัวแปรที่จะเริ่มต้นเมื่อคุณทำสิ่งนี้: var aShape : CAShapeLayer! และทำไม / เมื่อฉันจะทำสิ่งนี้?
107 swift  optional 

9
การตรวจสอบค่าว่างหลายรายการใน Java 8
ฉันมีรหัสด้านล่างซึ่งค่อนข้างน่าเกลียดสำหรับการตรวจสอบค่าว่างหลายรายการ String s = null; if (str1 != null) { s = str1; } else if (str2 != null) { s = str2; } else if (str3 != null) { s = str3; } else { s = str4; } ดังนั้นฉันจึงลองใช้Optional.ofNullablelike ด้านล่าง แต่ก็ยังยากที่จะเข้าใจหากมีคนอ่านรหัสของฉัน วิธีที่ดีที่สุดในการทำเช่นนั้นใน Java 8 คืออะไร String s = …

5
การใช้ Optional.ifPresent () อย่างเหมาะสม
ฉันพยายามเข้าใจifPresent()วิธีการของOptionalAPI ใน Java 8 ฉันมีตรรกะง่ายๆ: Optional<User> user=... user.ifPresent(doSomethingWithUser(user.get())); แต่ส่งผลให้เกิดข้อผิดพลาดในการคอมไพล์: ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here) แน่นอนฉันสามารถทำสิ่งนี้ได้: if(user.isPresent()) { doSomethingWithUser(user.get()); } แต่นี่ก็เหมือนกับการnullตรวจสอบที่รกรุงรัง หากฉันเปลี่ยนรหัสเป็นสิ่งนี้: user.ifPresent(new Consumer<User>() { @Override public void accept(User user) { doSomethingWithUser(user.get()); } }); รหัสเริ่มสกปรกขึ้นซึ่งทำให้ฉันคิดว่าจะกลับไปใช้nullเช็คแบบเก่า ความคิดใด ๆ ?
99 java  lambda  java-8  optional 

9
Downcasting optionals ใน Swift: as? พิมพ์หรือเป็น! ประเภท?
ให้สิ่งต่อไปนี้ใน Swift: var optionalString: String? let dict = NSDictionary() อะไรคือความแตกต่างในทางปฏิบัติระหว่างสองข้อความต่อไปนี้: optionalString = dict.objectForKey("SomeKey") as? String เทียบกับ optionalString = dict.objectForKey("SomeKey") as! String?

3
Swift: การทดสอบกับค่าทางเลือกในกรณีสวิตช์
ในสวิฟท์, วิธีการที่ฉันสามารถเขียนกรณีในงบสวิทช์ว่าการทดสอบเป็นค่าเปลี่ยนกับเนื้อหาของนั้นไม่จำเป็นกระโดดกว่าในกรณีที่จำเป็นมีnil? นี่คือวิธีที่ฉันคิดว่าสิ่งนี้อาจมีลักษณะ: let someValue = 5 let someOptional: Int? = nil switch someValue { case someOptional: // someOptional is non-nil, and someValue equals the unwrapped contents of someOptional default: // either, someOptional is nil, or someOptional is non-nil but someValue does not equal the unwrapped contents of someOptional } …

4
'Optional.get ()' โดยไม่ต้องทำเครื่องหมาย 'isPresent ()'
ฉันมีรหัสค้นหาต่อไปนี้ใน Java: return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get(); ฉันต้องการค้นหาคอลัมน์ตามชื่อและส่งกลับรายการแรกที่พบ ฉันเข้าใจว่ามีกรณีที่ไม่พบสิ่งใดและควรดำเนินการอย่างไร นี่คือสิ่งที่ต้องการโดยคำสาบานนี้: 'Optional.get()' without 'isPresent()' check เหรอ? แก้ไขอย่างไร? ฉันต้องการที่จะกลับมาnullหากไม่พบสิ่งใด อัปเดต โอเคโอเคฉันไม่รู้ว่าfindFirst()จะกลับOptionalมา

5
เหตุใด findFirst () จึงโยน NullPointerException หากองค์ประกอบแรกที่พบเป็นโมฆะ
ทำไมถึงโยนjava.lang.NullPointerException? List<String> strings = new ArrayList<>(); strings.add(null); strings.add("test"); String firstString = strings.stream() .findFirst() // Exception thrown here .orElse("StringWhenListIsEmpty"); //.orElse(null); // Changing the `orElse()` to avoid ambiguity รายการแรกstringsคือnullซึ่งเป็นมูลค่าที่ยอมรับได้อย่างสมบูรณ์ นอกจากนี้ยังfindFirst()ส่งคืนตัวเลือกซึ่งเหมาะสมยิ่งกว่าfindFirst()ที่จะสามารถจัดการกับnulls ได้ แก้ไข: อัปเดตorElse()ให้มีความคลุมเครือน้อยลง

6
การตรวจสอบค่าของบูลเสริม
เมื่อฉันต้องการตรวจสอบว่าบูลเสริมเป็นจริงการทำเช่นนี้ไม่ได้ผล: var boolean : Bool? = false if boolean{ } ส่งผลให้เกิดข้อผิดพลาดนี้: ประเภทตัวเลือก "@IvalueBool?" ไม่สามารถใช้เป็นบูลีนได้ ทดสอบ '! = nil' แทน ฉันไม่ต้องการตรวจสอบศูนย์ ฉันต้องการตรวจสอบว่าค่าที่ส่งคืนเป็นจริงหรือไม่ ฉันต้องทำเสมอหรือไม่if boolean == trueถ้าฉันทำงานกับ Bool เสริม เนื่องจาก Optionals ไม่สอดคล้องBooleanTypeอีกต่อไปคอมไพเลอร์ไม่ควรรู้ว่าฉันต้องการตรวจสอบค่าของ Bool หรือไม่?

8
วิธีแก้ปัญหา“ การแก้ไขสตริงสร้างคำอธิบายการดีบักสำหรับค่าที่เป็นทางเลือก คุณตั้งใจที่จะทำให้มันชัดเจนหรือไม่” ใน Xcode 8.3 beta?
ตั้งแต่เบต้า 8.3 เป็นต้นไปคำเตือน zillions "การแก้ไขสตริงจะสร้างคำอธิบายการดีบักสำหรับค่าที่ไม่บังคับคุณตั้งใจจะทำให้สิ่งนี้ชัดเจนหรือไม่" ปรากฏในรหัสของฉัน ตัวอย่างเช่นคำเตือนปรากฏขึ้นในสถานการณ์ต่อไปนี้ซึ่งตัวเลือกอาจนำไปสู่ศูนย์: let msg = "*** Error \(options["taskDescription"]): cannot load \(sUrl) \(error)" ตามที่ออกแบบไว้ก่อนหน้านี้ฉัน (และคอมไพเลอร์) ก็โอเคสำหรับฉันที่จะแก้ไขตัวเลือกเป็น 'ศูนย์' แต่คอมไพเลอร์เปลี่ยนใจ สิ่งที่คอมไพเลอร์แนะนำคือการเพิ่มตัวสร้างสตริงพร้อมคำอธิบายดังนี้: let msg = "*** Error \(String(describing: options["taskDescription"])): cannot load \(sUrl) \(error)" เห็นได้ชัดว่าผลลัพธ์นั้นชัดเจน แต่ก็ยุ่งยากมากในความคิดของฉัน มีตัวเลือกที่ดีกว่านี้หรือไม่? ฉันต้องแก้ไขคำเตือนเหล่านั้นทั้งหมดหรือดีกว่ารอเบต้าถัดไป

2
วิธีการเริ่มต้น C ++ 17 เวกเตอร์ของคู่ด้วยองค์ประกอบเสริม
ใน C ++ 17 คุณจะประกาศและกำหนดค่าเริ่มต้นเวกเตอร์ของคู่ (หรือ tuples) ด้วยองค์ประกอบเสริมได้อย่างไร std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true}, {2, false}, {3, nullptr}}; ฉันมีคู่ที่องค์ประกอบที่สองอาจเป็นโมฆะ / ไม่จำเป็น

3
ส่งคืนรายการเริ่มต้นหากรายการว่างเปล่าโดยใช้ java 8 Streams?
มีวิธีใดบ้างเพื่อให้สามารถดำเนินการด้านล่างเป็นชุดการดำเนินการสตรีมหนึ่งชุดแทนการตรวจสอบอย่างชัดเจนว่าถ้า RecommendedProducts ว่างเปล่าจากนั้นส่งคืนรายการเริ่มต้นมิฉะนั้นจะส่งคืนรายการที่กรองหรือไม่ public List<Product> getRecommendedProducts() { List<Product> recommendedProducts = this.newProducts .stream() .filter(isAvailable) .collect(Collectors.toList()); if (recommendedProducts.isEmpty()) { return DEFAULT_PRODUCTS; } return recommededProducts; }

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