草庐IT

Optional类

全部标签

java - optional 为空时如何返回?

我喜欢那个optionals现在在Java标准库中。但是我一直遇到一个基本问题,我还没有想出如何以最好的方式解决(最容易阅读和理解,最漂亮,最短):当可选为空时如何从方法返回?我正在寻找一种适用于可选数量和代码块大小的不同组合的通用解决方案。在下面的示例中,我将尝试展示我的意思:voidm1(){//WhenIgetanoptional:Optionalo=getOptional();//Andwanttoreturnifit'semptyif(!o.isPresent())return;//InthewholerestofthemethodIhavetocallOptional.ge

python - 参数解析器 : Optional argument with optional value

如果我有一个带有可选参数值的可选参数,有没有办法在未给出值时验证是否设置了参数?例如:parser=argparse.ArgumentParser()parser.add_argument('--abc',nargs='?')args=parser.parse_args()会正确地给我:optionalarguments:--abc[ABC]如何区分下面的1和2?''=>args.abc为无'--abc'=>args.abc仍然是None'--abcsomething'=>args.abc是something...更新:找到解决这个问题的技巧:可以使用“nargs='*'”代替“nar

python - Pycharm 预期类型 'optional[bytes]' 得到了 'str' 而不是

我正在使用rsplit来拆分路径名,rootPath=os.path.abspath(__file__)rootPath=(rootPath.rsplit('/',1)[0]).rsplit('/',1)[0]但是Pycharm警告,expectedtypeoptional[bytes],gotstrinstead在python文档中,它声明使用sep作为分隔符字符串。那么如何解决这个问题呢? 最佳答案 似乎rootPath被视为一个字节对象(也许是一个小错误?)或者警告是针对另一部分的。一般来说,PyCharm和错误本质上是在警告

python - 参数解析 : How to make mutually exclusive arguments optional?

我想像这样使用我的脚本:pythontest.pyrunpythontest.pystop我的代码是这样的:parser=argparse.ArgumentParser()command_group=parser.add_mutually_exclusive_group(required=True)command_group.add_argument('run',help='runit',action='store_true')command_group.add_argument('stop',help='stopit',action='store_true')当我执行它时,引发了一个

python - mypy错误,Union/Optional重载, “Overloaded function signatures 1 and 2 overlap with incompatible return types”

因此,让我们从一个例子开始。假设我们有几种可以组合在一起的类型,假设我们使用__add__来实现这一点。不幸的是,由于无法控制的情况,所有内容都必须是“可空的”,因此我们被迫在各处使用Optional。fromtypingimportOptional,List,overloadclassFoo:value:intdef__init__(self,value:int)->None:self.value=valuedef__add__(self,other:'Foo')->'Optional[Foo]':result=self.value-other.valueifresult>42:re

Python argparse : Combine optional parameters with nargs=argparse. 剩余部分

我一定遗漏了一些明显的东西。目标是使用argparse,第一个参数是必需的,第二个是可选的,其他任何剩余参数都是可选的。为了展示这个问题,我制作了两个测试解析器;它们之间的唯一区别是在一个中使用nargs=argparse.REMAINDER而在另一个中使用nargs='*'。defdoParser1(argsin):parser=argparse.ArgumentParser(description='Parserdemo.')parser.add_argument('req1',help='firstrequiredparameter')parser.add_argument('-

python - 单击命令行界面 : Make options required if other optional option is unset

使用Python编写命令行界面(CLI)时clicklibrary,是否可以定义例如三个选项,其中仅当第一个(可选)未设置时才需要第二个和第三个选项?我的用例是一个登录系统,它允许我通过authenticationtoken(选项1)或通过username(选项2)进行身份验证)和password(选项3)。如果提供了token,则无需检查是否定义了username和password或提示它们。否则,如果token被省略,则username和password将变为必需且必须提供。可以使用回调以某种方式完成吗?我的入门代码当然没有反射(reflect)预期的模式:@click.comma

python - PyCharm - 预期类型 'Optional[IO[str]]' ,取而代之的是 'TextIOWrapper[str]'

PyCharm升级到2017.1后,看似简单正确的地方开始弹出新的检查警告。它看起来如下:看起来open()没有返回file参数的预期类型,但代码非常简单,最重要的是,它确实按预期工作(使用Python3.5.2)。Pythondocs提到一种使用StringIO的方法,它确实消除了警告,但是这是为print指定输出流的正确pythonic方法吗?如果是这样,为什么?遵循这个警告很重要吗? 最佳答案 我找到的唯一解决方案是正确键入hintPyCharm:fromtypingimportIOwithopen('output_filen

swift - swift 3 "nearly match optional requirement"中的所有 6 个应用程序委托(delegate)函数 - 这是什么?怎么修?

昨晚下载了xcode8.2beta,转换了我的大部分代码,但现在卡在了关于应用程序委托(delegate)的六个功能的黄色警告符号:varwindow:UIWindow?funcapplication(application:UIApplication,didFinishLaunchingWithOptionslaunchOptions:[NSObject:AnyObject]?)->Bool{//Overridepointforcustomizationafterapplicationlaunch.returntrue}funcapplicationWillResignActive(

ios - 为什么不写optional mark就可以声明一个变量?

首先,我认为我的问题与那些关于“swift中什么是可选的”的问题不同。因为我问的是为什么我能做到这一点,而不是这是什么。我是swift的新手。当我今晚学习这门神奇的语言时,我遇到了一个问题,我从来没有在编程语言中看到过这个标记——“?”。我搜索了一会儿。我现在知道什么是可选绑定(bind)了。但现在我有一个新问题。当我想声明一个不是可选的变量时。我可以写这个语法:varfriend:String但是我不会写:varfriend:String=nil要声明一个nil变量,我只能使用可选的:varfriend:String?=nil让我们看第一段代码。刚刚声明新变量friend时,它的值是