回答
許多本次論壇的讀者希望看到一些代碼您嘗試....
program flow
version 8 // will work on almost all Stata in current use
gettoken what garbage : 0
if "`what'" == "" | "`garbage'" != "" | !inlist("`what'", "e", "i") {
di as err "syntax is flow e or flow i"
exit 198
}
if "`what'" == "e" {
<code for e>
}
else if "`what'" == "i" {
<code for i>
}
end
因爲我們已經建立的用戶輸入e
或i
最後if
條件是多餘的。根據口味編輯它。
鑑於對@NickCox回答您的意見,我想你試過這樣的事情:
program flow
version 8
syntax [, i e]
if "`i'`e'" == "" {
di as err "either the i or the e option needs to be specified"
exit 198
}
if "`i'" != "" & "`e'" != "" {
di as err "the i and e options cannot be specified together"
exit 198
}
if "`e'" != "" {
<code for e>
}
if "`i'" != "" {
<code for i>
}
end
之後,你叫flow
這樣的:flow, i
或flow, e
。注意逗號,現在這是必要的(但不是@NickCox的命令),因爲你讓它們成爲選項。
我的代碼與此非常相似,但是「E」和「I」總是在運行而不管流查詢,我無法弄清楚爲什麼。不過,你的代碼有效。謝謝! – Parseltongue
如果你想i
和e
是互相排斥的選項,那麼這又是另一種選擇:
program flow
version 8
capture syntax , e
if _rc == 0 { // syntax matched what was typed
<code for e>
}
else {
syntax , i // error message and program exit if syntax is incorrect
<code for i>
}
end
如果每個分支的代碼是在所有長,許多人會喜歡子程序爲每種情況下的風格很好,但這與這裏的草圖是一致的。請注意,在每個syntax
聲明中,該選項被聲明爲強制。
capture
的影響是:錯誤不是致命的,但是被capture
「吃掉」。所以你需要看看返回代碼,可在_rc
訪問。 0代表_rc
總是表示該命令成功。非零總是意味着該命令不成功。在這裏和其他地方,命令只有兩種方式是正確的,所以我們不需要知道什麼是_rc
;我們只需要檢查其他合法語法。
請注意,即使我在這裏的兩個答案在風格上有所不同,因爲輸入非法命令的用戶是否收到信息性錯誤消息或只是「無效語法」。上下文是期望每個Stata命令都附帶一個幫助文件。一些程序員在假設幫助文件解釋語法的前提下編寫;其他人希望他們的錯誤消息儘可能有幫助。
- 1. 語法在bat文件
- 2. gettext PO文件語法
- 3. 鏈接SPSS語法文件
- 4. specman的VIM語法文件
- 5. 主機文件ANTLR語法
- 6. 語法錯誤文件
- 7. 語法錯誤從文件
- 8. Powershell語法SharpDevelop XSHD文件?
- 9. Sip文件語法錯誤
- 10. Smarty文件存在語法
- 11. Antlr 4 C#語法文件
- 12. 語法錯誤文件
- 13. Gurobi LP文件語法
- 14. C語法/ AVR頭文件
- 15. 未知語法文件
- 16. 擊:語法錯誤:文件
- 17. log4cxx配置文件語法
- 18. MYSQL文檔語法語法
- 19. 無法從文件json_decode() - 語法錯誤
- 20. 如何從SPSS中的另一個語法文件獲取語法文件?
- 21. 從文本文件中獲取語法
- 22. Excel,Vba,Asterisk,語法,文本文件
- 23. 寫入文本文件無效語法
- 24. 源文件的文檔語法
- 25. 把野牛語法分割成更小的語法文件
- 26. Python的 - 導入文件 - 語法錯誤:無效的語法
- 27. Vim的語法文件是關於HTML語法嚴格
- 28. 如何用不同的語法語法高亮部分文件?
- 29. 在/語法文件中覆蓋vim關鍵字語法
- 30. 文本語法
謝謝,我試過''語法[,ie]'但它顯然沒有做任何事情 – Parseltongue