草庐IT

Optional类

全部标签

c++ - 为什么 std::optional<int> 的构造比 std::pair<int, bool> 更昂贵?

考虑这两种可以表示“可选int”的方法:usingstd_optional_int=std::optional;usingmy_optional_int=std::pair;鉴于这两个功能...autoget_std_optional_int()->std_optional_int{return{42};}autoget_my_optional()->my_optional_int{return{42,true};}...g++trunk和clang++trunk(带有-std=c++17-Ofast-fno-exceptions-fno-rtti)生成以下程序集:get_std_op

c++ - 应该如何使用 std::optional ?

我正在阅读std::experimental::optional的文档我对它的作用有一个很好的了解,但我不明白何时我应该使用它或应该如何使用它。该站点尚未包含任何示例,这使我更难掌握该对象的真实概念。std::optional何时是一个好的选择,以及它如何弥补以前标准(C++11)中没有的内容。 最佳答案 我能想到的最简单的例子:std::optionaltry_parse_int(std::strings){//trytoparseanintfromthegivenstring,//andreturn"nothing"ifyouf

java - Java 8 的 Optional.ifPresent 和 if-not-Present 的功能风格?

在Java8中,如果Optional对象存在,我想对它做一些事情,如果它不存在,我想做另一件事。if(opt.isPresent()){System.out.println("found");}else{System.out.println("Notfound");}不过,这不是“功能风格”。Optional有一个ifPresent()方法,但我无法链接orElse()方法。因此,我不能写:opt.ifPresent(x->System.out.println("found"+x)).orElse(System.out.println("NOTFOUND"));回复@assylias,

java - 为什么不应该在参数中使用 Java 8 的 Optional

我在许多网站上阅读过Optional应该只用作返回类型,而不是在方法参数中使用。我正在努力寻找一个合乎逻辑的原因。例如,我有一段逻辑,它有2个可选参数。因此,我认为这样编写我的方法签名是有意义的(解决方案1):publicintcalculateSomething(Optionalp1,Optionalp2{//mylogic}许多网页指定Optional不应用作方法参数。考虑到这一点,我可以使用以下方法签名并添加明确的Javadoc注释以指定参数可能为空,希望future的维护人员会阅读Javadoc,因此在使用参数之前始终执行空检查(解决方案2):publicintcalculat

c++ - 为什么在 std::optional 的某些实现中存在虚拟 union 成员?

libstdc++(GNU)和libc++(LLVM)都使用union实现std::optional值存储,并且它们都包含一个虚拟成员。GNU实现:using_Stored_type=remove_const_t;struct_Empty_byte{};union{_Empty_byte_M_empty;_Stored_type_M_payload;};LLVM实现:union{char__null_state_;value_type__val_;};我的问题是:为什么我们需要这些_M_empty/__null_state_成员?单人union有什么问题吗?

c++ - 为什么在 std::optional 的某些实现中存在虚拟 union 成员?

libstdc++(GNU)和libc++(LLVM)都使用union实现std::optional值存储,并且它们都包含一个虚拟成员。GNU实现:using_Stored_type=remove_const_t;struct_Empty_byte{};union{_Empty_byte_M_empty;_Stored_type_M_payload;};LLVM实现:union{char__null_state_;value_type__val_;};我的问题是:为什么我们需要这些_M_empty/__null_state_成员?单人union有什么问题吗?

json - JSON Schema 中的 "required"与 "optional"有什么区别

有时,我注意到以下JSON架构:{"type":"object","properties":{"address":{"type":"string","required":true}}}对{"type":"object","properties":{"address":{"type":"string","optional":false}}}那么上面例子中的required和optional有什么区别呢? 最佳答案 IETFdraftv4JSON模式的只定义required,不包含optional。引用section关于草稿v4中的必需

json - JSON Schema 中的 "required"与 "optional"有什么区别

有时,我注意到以下JSON架构:{"type":"object","properties":{"address":{"type":"string","required":true}}}对{"type":"object","properties":{"address":{"type":"string","optional":false}}}那么上面例子中的required和optional有什么区别呢? 最佳答案 IETFdraftv4JSON模式的只定义required,不包含optional。引用section关于草稿v4中的必需

python - Argparse:在 "optional arguments"下列出的必需参数?

我使用下面的简单代码来解析一些参数;请注意,其中之一是必需的。不幸的是,当用户在不提供参数的情况下运行脚本时,显示的用法/帮助文本并不表示存在非可选参数,我觉得这很困惑。如何让python指示参数不是可选的?代码如下:importargparseif__name__=='__main__':parser=argparse.ArgumentParser(description='Foo')parser.add_argument('-i','--input',help='Inputfilename',required=True)parser.add_argument('-o','--out

python - Argparse:在 "optional arguments"下列出的必需参数?

我使用下面的简单代码来解析一些参数;请注意,其中之一是必需的。不幸的是,当用户在不提供参数的情况下运行脚本时,显示的用法/帮助文本并不表示存在非可选参数,我觉得这很困惑。如何让python指示参数不是可选的?代码如下:importargparseif__name__=='__main__':parser=argparse.ArgumentParser(description='Foo')parser.add_argument('-i','--input',help='Inputfilename',required=True)parser.add_argument('-o','--out