提示用户提供更多信息。
Ask 向用户显示一个提示,并等待用户输入。
let userName = ask("Enter user name?")
userName
将包含用户输入的名字
Ask 可以用于获取 Int、Double 或 Float 类型的值,例如,获取一个整数:
let age = ask("How old are you?", type: Int.self)
如果用户输入的内容无法转换为整数,会向其显示一个新的提示,这个提示会持续显示,直到用户输入一个 Int 为止。
How old are you?
None
You must enter a valid Integer.
? Error
You must enter a valid Integer.
? 5
5
可以通过调用 AskSettings
上的 addInvalidCase
添加验证。
let name = ask("Who are you?") { settings in
settings.addInvalidCase("Snuffles is not allowed") { value in
value.containsString("Snuffles")
}
}
如果用户输入 Snuffles
,ask 会持续显示传递给 addInvalidCase
的无效消息。
Who are you?
Snuffles
Snuffles is not allowed
? Snuffles
Snuffles is not allowed
? Snowball
Your name is Snowball
AskSettings.confirm
会在用户输入后,要求其确认选择。
let name = ask("Who are you?") { settings in
settings.confirm = true
}
以上代码会输出:
Who are you?
Snuffles
Are you sure? YES
Your name is Snuffles
Choose 用于提示用户在一组可能的选项中选择一个。
例如,显示编程语言的选择:
let choice = choose("Whats your favorite programming language? ",
choices: "Swift", "Objective C", "Ruby", "Python", "Java :S")
这将打印:
1. Swift
2. Objective C
3. Ruby
4. Python
5. Java :S
Whats your favorite programming language?
用户可以选择数字 (1..5) 或选项本身。 如果用户输入错误,会持续显示提示,直到用户做出正确的选择为止。
Whats your favorite programming language? JavaScript
You must choose one of [1, 2, 3, 4, 5, Swift, Objective C, Ruby, Python, Java :S].
? BBB
You must choose one of [1, 2, 3, 4, 5, Swift, Objective C, Ruby, Python, Java :S].
? Swift
You selected Swift, good choice!
您可以自定义每个选择元素的返回值。 例如,如果您想从选择中获取一个 Int,您可以这样做:
let choice = choose("Whats your favorite programming language? ", type: Int.self) { settings in
settings.addChoice("Swift") { 42 }
settings.addChoice("Objective C") { 20 }
}
左侧的数字可以更改为字母,以下是如何操作:
let choice = choose("Whats your favorite programming language? ", type: String.self) { settings in
//choice value will be set to GOOD
settings.addChoice("Swift") { "GOOD" }
//choice value will be set to BAD
settings.addChoice("Java") { "BAD" }
settings.index = .Letters
settings.indexSuffix = " ----> "
}
这将打印:
a ----> Swift
b ----> Java
Whats your favorite programming language?
Agree 用于向用户提出一个“是/否”问题。它返回一个布尔值,表示用户的输入。
let choice = agree("Are you sure you want to `rm -rf /` ?")
如果用户输入任何无效输入,agree 将持续提示他输入“是/否”问题。
Are you sure you want to `rm -rf /` ? What!
Please enter "yes" or "no".
Are you sure you want to `rm -rf /` ? Wait
Please enter "yes" or "no".
Are you sure you want to `rm -rf /` ? No
You entered false
.package(url: "https://github.com/getGuaka/Prompt.git", from: "0.0.0"),
MIT