第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

定義一個(gè)同時(shí)具有強(qiáng)制參數(shù)和可選參數(shù)的選項(xiàng)

定義一個(gè)同時(shí)具有強(qiáng)制參數(shù)和可選參數(shù)的選項(xiàng)

慕碼人2483693 2022-09-28 15:37:23
我目前正在嘗試提出一種構(gòu)建命令行選項(xiàng)的方法,該方法在提供時(shí)可以采用一個(gè)必需的參數(shù)或第二個(gè)可選參數(shù)(除了必需的參數(shù)之外)。我試圖使用阿帕奇公地CLI來(lái)實(shí)現(xiàn)這一點(diǎn)。即我的程序 -a [整數(shù)]myProgram -a "test" --> isValid myProgram -a "test" 2 --> also isValid我試過(guò):Option.builder("a").hasArg().numberOfArgs(2).optionalArg(true).build();&Option.builder("a").hasArg().numberOfArgs(2).build();這兩者都沒(méi)有按預(yù)期工作。第一個(gè)示例使兩個(gè)參數(shù)都是可選的,它允許傳遞違反要求的空參數(shù)。第二個(gè)示例使這兩個(gè)參數(shù)都成為必需參數(shù),并且在僅提供字符串類(lèi)型 arg 時(shí)失敗。我已經(jīng)查看了commons cli的文檔,但他們提供的用例沒(méi)有涉及像這樣的復(fù)雜案例,同樣也沒(méi)有從api文檔中獲得太多細(xì)節(jié)。我希望程序在沒(méi)有值的情況下提供 -a 時(shí)失敗,但在提供 1 或 2 個(gè)參數(shù)時(shí)會(huì)成功,如前面所示。
查看完整描述

3 回答

?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊

過(guò)去,在這些情況下,我增加了第二個(gè)選項(xiàng)。所以在你的例子中,-b。

-b [bvalue]   If -a is enabled, ensure that it uses bvalue to thinginate.

如果第二個(gè)(可選)值充當(dāng)標(biāo)志,則它可以只是一個(gè)布爾標(biāo)志。

如果第二個(gè)(可選)值是一些更任意的輸入,則第二個(gè)選項(xiàng)可以采用單個(gè)必需的參數(shù)。

雖然我相信你有理由把你的參數(shù)組織成,但它通常會(huì)導(dǎo)致一個(gè)更有用的命令行,無(wú)論如何都沒(méi)有這些多層的可選性(即選項(xiàng)中存在第二位可選值)。您可以將其視為兩級(jí)和三級(jí)嵌套菜單之間的UX差異。由于項(xiàng)目數(shù)量有限,兩級(jí)菜單通常更可用。(如果沒(méi)有更具體的用例細(xì)節(jié),答案必須是泛泛而談的。-a reqdval optval


查看完整回答
反對(duì) 回復(fù) 2022-09-28
?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊

所以你有一個(gè)選項(xiàng),可以提供零個(gè)或一個(gè)時(shí)間,可以有一個(gè)或兩個(gè)值?

final Options options = new Options()
            .addOption(Option.builder("a").hasArg().hasArgs().build());CommandLine cmd = new DefaultParser().parse(options, args);
LOG.debug(Arrays.asList(args).toString() + " : " + Arrays.asList(cmd.getOptionValues("a")).toString());
DEBUG :: [-a, b] : [b]
DEBUG :: [-a, b, c] : [b, c]

您可能希望在提供太多或太少的參數(shù)時(shí)引發(fā)自己的分析異常。

如果您想多次提供答案,請(qǐng)查看此答案:https://stackoverflow.com/a/64611857/8656281-a


查看完整回答
反對(duì) 回復(fù) 2022-09-28
?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

根據(jù)我對(duì) appache-commons-cli 文檔的理解(我可能是錯(cuò)的),似乎沒(méi)有辦法在每個(gè)參數(shù)的基礎(chǔ)上設(shè)置“可選Arg”。

另外,我看到它在示例中使用的方式,它似乎在兩者之間使用分隔符的參數(shù),如in而不是空格?我不確定這一點(diǎn)。-D<property>=<value>

但是,是的,對(duì)于你想要的,你可以把它弄臟并允許可選參數(shù),然后在選項(xiàng)沒(méi)有必需的參數(shù)時(shí)拒絕它(違背了我知道使用commons-cli的目的)。

編輯:您是否嘗試過(guò)使用模式選項(xiàng)生成器?這個(gè)例子引起了我的興趣:

例如,以下內(nèi)容允許命令行標(biāo)志為“-v -p 字符串值 -f /dir/文件”。感嘆號(hào)位于強(qiáng)制選項(xiàng)之前。

 Options options = PatternOptionBuilder.parsePattern("vp:!f/");

它說(shuō)感嘆號(hào)可以在強(qiáng)制選項(xiàng)之前使用,但我不確定它是否可以與強(qiáng)制參數(shù)一起使用?不過(guò)我沒(méi)有嘗試過(guò)。


查看完整回答
反對(duì) 回復(fù) 2022-09-28
  • 3 回答
  • 0 關(guān)注
  • 116 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)