Ask["key"]
是用于 AskFunction 内部的一个结构,它给出与 key 关联的值,如果值未知的话则交互式地询问值.
Ask["key"formspec]
使用 formspec 定义输入如何被请求和解释.
Ask[{"key1","key2",…}]
给出与所有 keyi 关联的值,必要时则交互式地询问.
Ask[{"key1"->formspec1,"key2"->formspec2,…}]
使用 formspeci 定义 keyi 的输入如何被请求和解释.
Ask
Ask["key"]
是用于 AskFunction 内部的一个结构,它给出与 key 关联的值,如果值未知的话则交互式地询问值.
Ask["key"formspec]
使用 formspec 定义输入如何被请求和解释.
Ask[{"key1","key2",…}]
给出与所有 keyi 关联的值,必要时则交互式地询问.
Ask[{"key1"->formspec1,"key2"->formspec2,…}]
使用 formspeci 定义 keyi 的输入如何被请求和解释.
更多信息
- 当 Ask["key"] 第一次出现在 AskFunction[{…,"key"->spec,…},body] 的运算中时,与 "key" 关联的值将交互式地被请求,使用由 spec 指定的表单和解释. Ask["key"] 后面的运算返回存储的值.
- 如果 Ask["key"] 是在 AskFunction 内部被运算的,并没有给出如何请求 "key" 的规范,则认为它等价于 Ask["key"->"String"].
- 使用 Ask["key"] 得到的 "key" 值可以通过对随后的 AskAppend[…] 结构运算更改,并可以通过 AskConfirm[…] 删除.
- 如果关于如何请求键值的规范在 AskFunction 中给出,它将覆写所包含的 Ask 结构中给出的任何规范. 如果在AskFunction 中没有给出规范,则使用第一个 Ask 中将要运算的规范.
- Ask["key"]=value 或 Ask["key"]:=value 可用于设定与 AskFunction 内部的键关联的值,如果该值尚未设定的话t.
- Ask["key"]=. 取消所设定的与 AskFunction 内部的键关联的值,并且有效地将 AskFunction 内部的运算返回到"key" 值被请求时的点.
范例
打开所有单元 关闭所有单元基本范例 (3)
CloudDeploy[AskFunction[Ask[{"n", "enter a number"} -> "Number"]]]CloudDeploy[AskFunction[{Ask["name" -> "String"], Ask["email" -> "EmailAddress"]}]]CloudDeploy[AskFunction[Ask["name" -> "String"];{Ask["name" -> "String"], Ask["email" -> "EmailAddress"]}]]范围 (6)
CloudDeploy[AskFunction[Ask[{"job" -> {"dentist", "CEO", "intern"}, "income" -> "CurrencyAmount", "gender" -> {"Female", "Male"}}]]]当给定多个键时,Ask 也省略已知的问题:
CloudDeploy[AskFunction[Ask["job" -> {"dentist", "CEO", "intern"}];Ask[{"job" -> {"dentist", "CEO", "intern"}, "income" -> "CurrencyAmount", "gender" -> {"Female", "Male"}}]]]CloudDeploy[AskFunction[Ask[{"sum", "2 + 2 =?"} -> "Number"]; If[Ask["sum"] == 4, "correct", "wrong!"]]]CloudDeploy[AskFunction[Ask[{"interest-rate", "What is your current interest rate"} -> "Percent"];
If[
Ask[{"change", "Would you like to renegotiate it?"} -> {"Yes" -> True, "No" -> False}] , Ask[{"capital", "What is your current capital?"} -> "CurrencyAmount"]];Ask[{"change", "capital"}]
]]CloudDeploy[AskFunction[If[Ask[{"gender", "What is your gender"} -> {"male", "female"}] === "male", Ask["pregnant"] = False, Ask[{"pregnant", "Are you pregnant?"} -> {"Yes" -> True, "No" -> False}]];
If[Ask["pregnant"], "Congratulations!", "Ok"]]]如果第一个问题的答案是 "male",与 "pregnant" 关联的值通过编程方式设置为 False:
CloudDeploy[AskFunction[If[Ask[{"x", "Enter a positive number"} -> "Number"] ≤ 0, AskDisplay["The value you entered is not positive. Try again."]; Ask["x"] =., AskDisplay["Congratulations, you win!"]]]]属性和关系 (4)
在 AskAppend 之前使用 Ask 将导致第一个答案在被追加至结果前封装在列表中:
CloudDeploy[AskFunction[Ask["number" -> "Number"]; AskAppend["number"]]]在 AskAppend 之后使用 Ask 将导致当前已知的值列表被返回,而不出现表单:
CloudDeploy[AskFunction[Ask["number" -> "Number"];AskAppend["number"]; Ask["number"]]]AskConfirm 可以用来将运算回退到值已知之前的点. 被 AskAppend 的否定结果删除的 Ask 值将被再次询问:
CloudDeploy[AskFunction[Ask[{"sum", "what is 2+2?"} -> "Number"]; If[Ask["sum"] ≠ 4, AskConfirm["sum", "are you sure 2+2 = `value`?"]; "wrong", "correct"]]]AskConfirm 可以通过取消设置与键相关联的值来模拟:
CloudDeploy[AskFunction[Ask[{"sum", "what is 2+2?"} -> "Number"]; If[Ask["sum"] ≠ 4, If[!Ask[{"confirm", StringTemplate["are you sure 2+2 = ``?"][Ask["sum"]]} -> "Boolean"], Ask["sum"] =.]; "wrong", "correct"]]]相关指南
-
▪
- 设置用户交互 ▪
- 创建表单界面和应用程序
相关的工作流程
- 创建对话界面
文本
Wolfram Research (2016),Ask,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Ask.html (更新于 2017 年).
CMS
Wolfram 语言. 2016. "Ask." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2017. https://reference.wolfram.com/language/ref/Ask.html.
APA
Wolfram 语言. (2016). Ask. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Ask.html 年
BibTeX
@misc{reference.wolfram_2026_ask, author="Wolfram Research", title="{Ask}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/Ask.html}", note=[Accessed: 18-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_ask, organization={Wolfram Research}, title={Ask}, year={2017}, url={https://reference.wolfram.com/language/ref/Ask.html}, note=[Accessed: 18-August-2026]}