AskFunction[body]
计算 body,交互式地询问由 Ask[…] 及相关结构指定的值.
AskFunction[{"key1"spec1,"key2"spec2,…},body]
指定如何询问与 keyi 关联的值.
AskFunction
AskFunction[body]
计算 body,交互式地询问由 Ask[…] 及相关结构指定的值.
AskFunction[{"key1"spec1,"key2"spec2,…},body]
指定如何询问与 keyi 关联的值.
更多信息和选项
- 下列特殊结构可以出现在 AskFunction 的主体中:
-
Ask[…] 如果未知,询问键的值 AskedValue[…] 如果已知,得到键的值 AskAppend[…] 询问值,并将其追加至已知值的列表 AskConfirm[…] 确认或更改值 AskDisplay[…] 显示插入所询问值的表达式 AskTemplateDisplay[…] 显示应用于询问值的模板 AskedQ[…] 检验键的值是否已经被询问 - AskFunction[…][] 在笔记本中运算,每当遇到要求询问值的结构时将显示一个表单.
- CloudDeploy[AskFunction[…]] 生成对应于 AskFunction 激活版本的 CloudObject.
- AskFunction[…][<|"keyk"->inputk|>] 表示 AskFunction,其中与 "keyk" 关联的值取作 inputk.
范例
打开所有单元 关闭所有单元基本范例 (1)
设置 AskFunction:
ask = AskFunction[Ask["x" -> "Number"] + Ask["y" -> "Number"]];ask[]CloudDeploy[ask]ask2 = ask[<|"x" -> "3"|>]ask2[]范围 (3)
为 AskFunction 提供第一个参数,指定如何询问值:
CloudDeploy[AskFunction[<|"x" -> "Number", "y" -> "Number"|>, Ask["x"] ^ Ask["y"]]]AskFunction 使用 Wolfram 语言的运算语义来跳过不需要的问题:
CloudDeploy[AskFunction[If[Ask[{"married", "Are you married?"} -> {"Yes" -> True, "No" -> False}], Ask[{"spouse-name", "What is the name of your spouse?"} -> "String"]]; Style["Thank you for taking our survey!", Bold, 36]]]使用相同的语法作为 FormFunction 和 FormObject 来指定问题的外观:
CloudDeploy[AskFunction[Ask["n" -> <|"Interpreter" -> Restricted["Integer", {1, 20}], "Control" -> Slider|>]!]]属性和关系 (7)
将 AskFunction 与 Ask 结合,用于简单的问题或者获取与键关联的值:
CloudDeploy[AskFunction[Ask[{"x", "Input a number"} -> "Integer"]; Ask["x"] ^ 2]]AskConfirm 可用于将运算倒转回值已知之前的点:
CloudDeploy[AskFunction[Ask[{"sum", "what is 2+2?"} -> "Number"]; If[Ask["sum"] ≠ 4, AskConfirm["sum", "are you sure 2+2 = `value`?"]; "wrong", "correct"]]]使用 AskAppend 累积输入:
CloudDeploy[AskFunction[AskDisplay["Enter three countries"];Do[AskAppend["country" -> "Country"], {3}];Ask["country"]]]使用 AskDisplay 显示消息:
CloudDeploy[AskFunction[AskDisplay["Welcome to TaxReturnPro™!"];Ask[{"income", "How much did you make this year?"} -> "CurrencyAmount"];AskDisplay[ If[Ask["income"] > Quantity[1*10^6, "USDollars"], "whoa!", "puny…"]]]]AskTemplateDisplay 取应用于当前值的函数或模板:
CloudDeploy[AskFunction[Ask[{"n", "How many sides?"} -> Restricted["Integer", {3, Infinity}]]; AskTemplateDisplay[Graphics[RegularPolygon[#n]]&]]]使用 AskedQ 验证一个键是否已被询问:
CloudDeploy[AskFunction[<|{"name", "What's your name?"} -> "String"|>, While[!AskedQ["name"], Ask["name"]]]]AskedValue 返回值,而不引起表单的显示:
CloudDeploy[AskFunction[If[Ask[{"age", "How old are you?"} -> "Number"] ≥ 21, Ask[{"drink", "Do you drink?"} -> {"Yes" -> True, "No" -> False}]]; Replace[AskedValue["drink"], { _Missing :> "not applicable", True -> "drinking", False -> "not drinking"}]]]可能存在的问题 (2)
当 AskFunction 在云端部署时,窗体在每次访问时都在干净内核上被重新运算. 正因为如此,返回随机值的函数可能在每个步骤会返回不同的值:
CloudDeploy[AskFunction[a = RandomInteger[{1, 10}];AskDisplay[a];AskDisplay[a]]]一个可能的解决方法是使用 SeedRandom 来初始化伪随机数生成器,种子取决于先前的值或诸如 $RequesterAddress 的值:
CloudDeploy[AskFunction[
Ask[{"name", "What's your name?"} -> "String"];SeedRandom[Ask["name"]];a = RandomInteger[{1, 10}];AskDisplay[a];AskDisplay[a]
]]云计算对内存使用和计算时间有限制. AskFunction 的限制取决于您的云服务计划,具体数值可通过 CloudAccountData 中的 "DeployedMemoryLimit" 和 "DeployedEvaluationTimeLimit" 查询:
CloudAccountData /@ {"DeployedMemoryLimit", "DeployedEvaluationTimeLimit"}相关指南
-
▪
- 创建表单界面和应用程序 ▪
- 设置用户交互 ▪
- 云函数和部署 ▪
- 构建用户界面
文本
Wolfram Research (2016),AskFunction,Wolfram 语言函数,https://reference.wolfram.com/language/ref/AskFunction.html.
CMS
Wolfram 语言. 2016. "AskFunction." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/AskFunction.html.
APA
Wolfram 语言. (2016). AskFunction. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/AskFunction.html 年
BibTeX
@misc{reference.wolfram_2026_askfunction, author="Wolfram Research", title="{AskFunction}", year="2016", howpublished="\url{https://reference.wolfram.com/language/ref/AskFunction.html}", note=[Accessed: 17-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_askfunction, organization={Wolfram Research}, title={AskFunction}, year={2016}, url={https://reference.wolfram.com/language/ref/AskFunction.html}, note=[Accessed: 17-August-2026]}