Questions tagged «optional»

一个不可变的类型,可能包含值或引用。此类型的每个实例要么包含一个非null值或一个引用,要么不包含任何内容(在这种情况下,我们说该引用“不存在”;从不说它包含“包含null”)。


8
斯威夫特:守卫让vs如果让
我一直在阅读有关Swift中的Optionals的信息,并且看到了一些示例,这些示例if let用于检查Optional是否持有值,并且在有情况的情况下–使用未包装的值进行操作。 但是,我已经看到在Swift 2.0中,该关键字guard let被广泛使用。我想知道是否if let已从Swift 2.0中删除或是否仍然可以使用它。 我应该改变我的计划包含if let到guard let?

6
为什么java.util.Optional不可序列化,如何使用此类字段序列化对象
Enum类是可序列化的,因此使用枚举序列化对象没有问题。另一种情况是class具有java.util.Optional类的字段。在这种情况下,将引发以下异常:java.io.NotSerializableException:java.util.Optional 如何处理此类,如何序列化它们?是否可以将此类对象发送到远程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 void setValue(Integer i) { this.i = Optional.of(i); } public Optional<Integer> getValue() { return …

9
Swift函数中的默认可选参数
当我设置firstThing为默认nil值时,它将起作用,没有默认值nilI时会出现错误,即调用该函数时缺少参数。 通过输入,Int?我认为它使其具有默认值的可选,nil对吗?如果是这样,为什么没有,它为什么不起作用= nil? func test(firstThing: Int? = nil) { if firstThing != nil { print(firstThing!) } print("done") } test()
107 swift  function  optional 

1
带有“?”的快速可变装饰 (问号)和“!” (感叹号)
我了解在Swift中所有变量都必须设置一个值,并且通过使用可选参数,我们可以将变量设置为nil初始值。 我不明白的是,用a设置变量的作用!是什么,因为我的印象是这会“取消包装”可选值。我认为通过这样做,您可以保证该变量中有一个要解包的值,这就是为什么在IBActions上使用它的原因。 简而言之,执行以下操作时初始化的变量是什么: var aShape : CAShapeLayer! 以及为什么/何时会这样做?
106 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.ofNullable如下所示的方法,但是如果有人阅读了我的代码,仍然很难理解。用Java 8最好的方法是什么 String s = Optional.ofNullable(str1) .orElse(Optional.ofNullable(str2) .orElse(Optional.ofNullable(str3) .orElse(str4))); 在Java …


5
正确使用Optional.ifPresent()
我试图了解Java 8中API 的ifPresent()方法Optional。 我有简单的逻辑: 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支票。 有任何想法吗?
94 java  lambda  java-8  optional 

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 } 如果我只是这样写,那么编译器会抱怨someOptional没有解包,但是如果我通过添加!到末尾来显式解包,那么我当然会在someOptional包含的任何时间得到运行时错误nil。添加?代替!对我来说是有意义的(我想是基于可选链接的精神),但不会使编译器错误消失(即,实际上并没有解开可选)。

5
如果findFirst()找到的第一个元素为null,为什么会抛出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()返回Optional,这对于findFirst()能够处理nulls更有意义。 编辑:更新了orElse()以减少歧义。

6
检查可选布尔值
当我想检查Optional Bool是否为true时,这样做不起作用: var boolean : Bool? = false if boolean{ } 导致此错误: 可选类型“ @IvalueBool?” 不能用作布尔值;测试'!= nil'代替 我不想检查零。我想检查返回的值是否为true。 if boolean == true如果我正在与可选布尔一起工作,是否总是必须做? 由于OptionalsBooleanType不再兼容,编译器难道不应该知道我要检查Bool的值吗?

4
不带“ isPresent()”检查的“ Optional.get()”
我在Java中有以下搜索代码: return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get(); 我希望按名称查找列并返回找到的第一个。 我了解在某些情况下什么也找不到,应该对其进行处理,但是如何处理呢? 这是这个咒骂所要的: 'Optional.get()' without 'isPresent()' check ? 怎么修?null如果没有发现,我希望返回。 更新 好吧,好吧,我只是没有意识到,那又findFirst()回来了Optional。

8
如何解决“字符串插值为可选值生成调试描述;你是说要明确吗?” 在Xcode 8.3 beta中?
从beta 8.3开始,成千上万的警告“字符串插值会为可选值生成调试说明;您是要明确显示此值?” 出现在我的代码中。 例如,在以下情况下会弹出警告,其中选项可能会导致无效: let msg = "*** Error \(options["taskDescription"]): cannot load \(sUrl) \(error)" 按照之前的设计,对于我(和编译器)来说,可以将可选值插值为“ nil”是可以的。但是编译器改变了主意。 编译器建议的是添加一个具有以下描述的String构造函数: let msg = "*** Error \(String(describing: options["taskDescription"])): cannot load \(sUrl) \(error)" 显然,结果在我看来是明确的,但也非常麻烦。有更好的选择吗?我是否必须解决所有这些警告,或者更好地等待下一个Beta?

4
使用Boost库程序选项的必需参数和可选参数
我正在使用Boost程序选项库来解析命令行参数。 我有以下要求: 一旦提供了“帮助”,所有其他选项都是可选的。 一旦不提供“帮助”,则所有其他选项都是必需的。 我该如何处理?这是我处理此问题的代码,我发现它非常多余,我认为必须很容易做到,对吗? #include <boost/program_options.hpp> #include <iostream> #include <sstream> namespace po = boost::program_options; bool process_command_line(int argc, char** argv, std::string& host, std::string& port, std::string& configDir) { int iport; try { po::options_description desc("Program Usage", 1024, 512); desc.add_options() ("help", "produce help message") ("host,h", po::value<std::string>(&host), "set the host server") ("port,p", po::value<int>(&iport), "set …

12
如果不存在,如何在Optional上执行逻辑?
我想使用java8替换以下代码Optional: public Obj getObjectFromDB() { Obj obj = dao.find(); if (obj != null) { obj.setAvailable(true); } else { logger.fatal("Object not available"); } return obj; } 以下伪代码由于没有orElseRun方法而无法使用,但无论如何它说明了我的目的: public Optional<Obj> getObjectFromDB() { Optional<Obj> obj = dao.find(); return obj.ifPresent(obj.setAvailable(true)).orElseRun(logger.fatal("Object not available")); }
81 java  java-8  optional 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.