AskFunction[body]
Ask[…]および関連構造で指定された値を求めて body をインタラクティブに評価する.
AskFunction[{"key1"spec1,"key2"spec2,…},body]
keyiに関連付けられた値をどのように求めるかを指定する.
AskFunction
AskFunction[body]
Ask[…]および関連構造で指定された値を求めて body をインタラクティブに評価する.
AskFunction[{"key1"spec1,"key2"spec2,…},body]
keyiに関連付けられた値をどのように求めるかを指定する.
詳細とオプション
- AskFunctionの本体には次の特殊構造を使うことができる.
-
Ask[…] キーの値が未知の場合にこれを求める AskedValue[…] キーの値が既知の場合にこれを得る AskAppend[…] 値を求め,既知の値のリストにこれを加える AskConfirm[…] 値を確認または変更する AskDisplay[…] 求めた値を挿入して式を表示する AskTemplateDisplay[…] 求めた値に適用したテンプレートを表示する AskedQ[…] キーの値が求められたかどうかを判定する - AskFunction[…][]はノートブック内で評価され,値を求めることが必要な構造に遭遇するたびにフォームを表示する.
- CloudDeploy[AskFunction[…]]はAskFunctionのアクティブなバージョンに対応するCloudObjectを返す.
- AskFunction[…][<|"keyk"->inputk|>]は,"keyk"に関連付けられた値が inputkであるとみなされるAskFunctionを表す.
例題
すべて開く すべて閉じる例 (1)
AskFunctionを設定する:
ask = AskFunction[Ask["x" -> "Number"] + Ask["y" -> "Number"]];ask[]CloudDeploy[ask]ask2 = ask[<|"x" -> "3"|>]ask2[]スコープ (3)
AskFunctionの第1引数を与え,値の求め方を指定する:
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 Language. 2016. "AskFunction." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/AskFunction.html.
APA
Wolfram Language. (2016). AskFunction. Wolfram Language & System Documentation Center. Retrieved from 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: 15-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: 15-August-2026]}