草庐IT

Optionals

全部标签

java - 根据两个 Optionals 的值调用不同的方法

在使用Java8Optionals时,我经常遇到以下情况。我有两个Optional对象,然后我想根据这些Optional的值(ifPresent)调用不同的方法。这是一个例子:voidexample(Optionalo1,Optionalo2)throwsException{if(o1.isPresent()&&o2.isPresent()){handler1(o1.get(),o2.get());}elseif(o1.isPresent()){handler2(o1.get());}elseif(o2.isPresent()){handler3(o2.get());}else{thr

java - 带有 Optional 的 Null 安全方法链接

Guava的Optionalpattern很棒,因为它有助于消除null的歧义。transform当链的第一部分可能不存在时,方法对于创建空安全方法链非常有帮助,但当链的其他部分不存在时就没有用了。这个问题与GuavaOptionaltype,whentransformationreturnsanotherOptional有关,它问的问题本质上是相同的,但针对不同的用例,我认为这可能不是Optional的预期用途。(处理错误)。考虑一种方法OptionalfindBook(Stringid).findBook(id).transform(Book.getName)按预期工作。如果没有找

python - 如何更改 argparse 中的文本 "optional arguments"

出于某种原因,我不在我的程序中使用位置参数,而是仅接受“可选”参数,通过narg='?'或action等工具控制参数是否真正可选='store_true'。因此,帮助文本中的“可选参数”会产生误导。我可以将它简单地显示为“参数”吗?谢谢。 最佳答案 好吧,查看argparse源代码,在我看来,它就像覆盖parser._optionals的title一样简单,就像这样:parser._optionals.title="mymandatoryarguments,theyareactuallyoptionals,butI'llcheckf

Swift 3 不正确的字符串插值与隐式展开的 Optionals

为什么在Swift3中使用字符串插值时隐式解包的可选值不解包?示例:在playground中运行以下代码varstr:String!str="Hello"print("Thefollowingshouldnotbeprintedasanoptional:\(str)")产生这个输出:Thefollowingshouldnotbeprintedasanoptional:Optional("Hello")当然,我可以使用+运算符连接字符串,但我在我的应用程序中几乎无处不在使用字符串插值,由于这个(错误?),现在它不再起作用了。这甚至是一个错误,还是他们故意用Swift3改变了这种行为?

Swift 3 不正确的字符串插值与隐式展开的 Optionals

为什么在Swift3中使用字符串插值时隐式解包的可选值不解包?示例:在playground中运行以下代码varstr:String!str="Hello"print("Thefollowingshouldnotbeprintedasanoptional:\(str)")产生这个输出:Thefollowingshouldnotbeprintedasanoptional:Optional("Hello")当然,我可以使用+运算符连接字符串,但我在我的应用程序中几乎无处不在使用字符串插值,由于这个(错误?),现在它不再起作用了。这甚至是一个错误,还是他们故意用Swift3改变了这种行为?

swift - 为什么要创建 "Implicitly Unwrapped Optionals",因为这意味着您知道有一个值?

为什么要创建一个“隐式解包可选”而不是只创建一个常规变量或常量?如果您知道它可以成功解包,那么为什么首先要创建一个可选的呢?例如,为什么是这样:letsomeString:String!="thisisthestring"将比:更有用letsomeString:String="thisisthestring"如果“可选值表示常量或变量允许具有‘无值’”,但“有时从程序的结构中可以清楚地看出,在首次设置该值后,可选值将始终具有值”,那是什么首先将其设为可选的意义何在?如果你知道一个可选的总是有一个值,那不是让它不是可选的吗? 最佳答案

swift - 为什么要创建 "Implicitly Unwrapped Optionals",因为这意味着您知道有一个值?

为什么要创建一个“隐式解包可选”而不是只创建一个常规变量或常量?如果您知道它可以成功解包,那么为什么首先要创建一个可选的呢?例如,为什么是这样:letsomeString:String!="thisisthestring"将比:更有用letsomeString:String="thisisthestring"如果“可选值表示常量或变量允许具有‘无值’”,但“有时从程序的结构中可以清楚地看出,在首次设置该值后,可选值将始终具有值”,那是什么首先将其设为可选的意义何在?如果你知道一个可选的总是有一个值,那不是让它不是可选的吗? 最佳答案

swift - 如何在 Xcode 9.4 中使 Optionals Hashable

在Xcode10中,Swift编译器足够智能:将包装Hashable值的Optionals视为Hashable。Xcode>=9.4还将处理包含所有Hashable的struct属性也是Hashable。奇怪的是,即使构建语言是Swift4甚至Swift3,Xcode10也会将Optionals视为Hashable。以下面的代码为例:structFoo:Hashable{varstring1:String?varstring2:String?}该代码在Xcode10下编译,并且使用Foo对象的hashValue可以按预期工作,即使构建语言是Swift3!但是,在Xcode9.4中,除非

ios - Swift Optionals - 在展开可选值时意外发现 nil

我是Swift的新手,一直在尝试围绕可选值进行思考。据我所知——虽然我可能错了——变量可以是可选的,因此包含一个nil值,这些必须在代码中考虑。每当我在我的应用程序中点击“保存”按钮时,我都会收到错误消息:“fatalerror:在展开可选值时意外发现nil”。@IBActionfuncsaveTapped(sender:AnyObject){//codetosavefilluptoParsebackend//ifvariableisnotnilifletusername=PFUser.currentUser()?.username{//setusernameequaltocurren

php - 我仍然无法理解 Optionals

我是Swift语言的新手,在此之前我只从事网络开发。我试图理解可选值的概念,但每次他们出现一些使用它的情况时,我仍然不明白他们为什么这样做(或者我可能有一点想法,但仍然不确定。)我读了几篇关于这个的文章,也许我一直对它太困惑而迷路了。让我们举一些例子。假设我有一个带有用于电子邮件的textfield的注册表单。发送表单后,在PHP中我可以执行如下操作:$mail=$_POST['mail'];if($mail==""){echo"ERROR:TheE-mailisempty";}else{//Dosomethingmore}如果文本字段为空,则$_POST['mail']的值为空字符串