Interpreter
解释器类型清单 »Interpreter[form]
表示一个解释器对象,能尽量把输入解释成指定形式的对象.
Interpreter[form,test]
Interpreter[form,test,fail]
如果测试失败,则返回应用函数 fail 后的结果.
更多信息和选项
- Interpreter[…][input] 把解释器应用于特定输入,输入通常是字符串.
- 可能的 form 规范包括:
-
"Expression" 任意 Wolfram 语言表达式 "HeldExpression" 要返回的处于不计算形式的表达式 "InactiveExpression" 要返回的处于未激活形式的表达式 "SemanticExpression" 对自由格式输入解释后得到的表达式 "Number" 标准格式的任意数字 "SemanticNumber" 根据语义解释得出的数字(例如 "一半") "ComputedNumber" 计算后得到的数字(例如 "2+2") "Integer" 整数 "SemanticInteger" 根据语义解释得出的整数(例如 "六") "ComplexNumber" 实数或复数 "MathExpression" 数学表达式(例如 "sin(2x)+1") "MathFormula" 数学公式(例如 "2x+3y=0") "HeldMathFormula" 要返回的处于不计算形式的数学公式 "HexInteger" 十六进制整数 "RomanNumeral" 罗马数字 "Boolean" 布尔数值(true/false、1/0 等,给出 value ( True/False ) "String" 纯字符串 "TextArea" 任意长度的文本(以文本区域形式呈现) "TextLine" 单行文字 "URLString" URL 编码的字符串 "URL" 格式正确的 URL "URLQueryString" URL 查询字符串 "SemanticURL" 根据语义得出的 URL(例如:根据公司的名字) "IPAddress" 格式正确的 IP 地址 "FileName" 您计算机上某个文件的名字 "UploadedFile" 要上传到云端的文件 "CachedFile" 要缓存到临时目录的文件 "EmailAddress" 格式正确的 email 地址 "PhoneNumber" 格式正确的电话号码 "Date" 任意标准格式的日期 "StructuredDate" 从选择器获取的日期 "DateTime" 日期和时间 "Time" 一天中的时间 "ComputedDate",etc. 经过计算得出的日期(例如 "下周二") "Location" 能够给出地理位置的任何内容 "GeoCoordinates" 由经度和纬度指定的地理位置 "StreetAddress" 任意标准格式的街道地址 "Country" 国家或类似于国家的地区 "AdministrativeDivision" 州、省、县等 "USState" 美国的州 "USCounty" 美国的县 "Quantity" 带单位的数量 "ComputedQuantity" 经过计算得出的数量 "StructuredQuantity" 仅由数字和单位组成的数量 "PhysicalQuantity" 物理量(例如 "质量") "CurrencyAmount" 货币数量(例如 "$7.50") "CurrencyName" 货币名称(例如 "美元") "Company" 公司 "TickerSymbol" 金融工具代号 "Image" 图像 "Color" 任意标准格式的颜色 "StructuredColor" 从选择器获取的颜色 "Sound" 声音 "Graphics" 向量图形 "entity" 任意 Wolfram 语言的实体类型(例如 "City") "entityclass" 实体类别(例如 "CityClass") "format" 任意标准 Wolfram 语言导入格式 Restricted[form,spec] 以指定方式限定的形式 DelimitedSequence[form,…] 分隔开的格式序列,以列表形式返回 form1form2… 几种可能的格式,按顺序尝试 {c1,c2,…} 选择 ci 的集合 {lab1c1,lab2c2,…} 带标签 labi 的选择 ci AnySubset[{c1,c2,…}] ci 的任意子集 CompoundElement[{form1,…}] 由 formi 指定的一列元素 CompoundElement[<key1form1,… >] 由 formi 指定的元素关联 RepeatingElement[form,…] 全部由 form 指定的一列元素 CloudObject[…] 一个已部署的 GrammarRules 对象 QuantityVariable["pq"] 和物理量 pq 兼容的量 - $InterpreterTypes 给出了可能的解释器类型的完整列表.
- Interpreter[…][input] 返回解释后的值,如果 input 为空白或 Failure[…],则返回 Missing["NoInput"].
- 对于 "entity",可以使用 EntityValue 支持的任意类型的实体.
- Interpreter["format"]["input"] 实际上等价于 ImportString["input","format"].
- Interpreter[choices] 中的 choices 可以是一系列规则或一个关联. 没有歧义的情况下,也可以使用一组纯数值.
- Interpreter[form,test][input] 把 test 应用于经过指定 form 解释的 input 的结果上.
- 如果 test 的结果为 True,则返回 input 的解释结果.
- 如果 test 的结果为 Failure 对象,则立即返回失败对象.
- 如果 test 结果为 False 或任何别的情况,则在 Interpreter[form,test,fail][input] 中,会立即对 input 的解释应用 fail,并将结果返回. 如果没有给出 fail,则返回 Failure 对象.
- 如果 Interpreter 直接产生 Failure 对象,则使用下列标签:
-
"InterpretationFailure" 给定的字符串不能解释为指定的形式 "RestrictionFailure" 解释成功,但限制失败 "ConditionFailure" 解释和限制都成功,但显式的测试失败 "ConnectionFailure" 不能连接云端 - Interpreter 支持下列选项:
-
AmbiguityFunction Automatic 语义解释结果模棱两可时,运用该函数 DateFormat $DateStringFormat 解释日期用的缺省格式 DigitBlock Infinity 预设的数字分隔符之间数字的位数 GeoLocation $GeoLocation 根据语义解释位置时,预设的地理位置 ImportOptions {} 导入数据时所用的选项 NumberPoint "." 预设的小数点用的字符串 NumberSeparator {",", " "} 预设的数字分隔符字符串 NumberSigns {"-",""} 预设的数字的正负符号的字符串 TimeZone $TimeZone 根据语义解释时区时,预设的时区 - Interpreter[spec][{input1,input2,…}] 等价于 {Interpreter[spec][input1],Interpreter[spec][input2],…},除非 spec 含有如 CompoundElement 或 RepeatingElement 这样直接解释给定结构的形式.
- Interpreter[form]["string1" "string2"…] 返回的结果为第一个能解释为指定格式的 stringi.
- 通常情况下,Interpreter[form][CloudObject[…]]、Interpreter[form][File[…]] 和 Interpreter[form][URL[…]] 根据指定的表单产生诠释云对象、文件或 URL 内容的结果.
- 对于其他表达式,如果 expr 符合所给 form 的规范,则 Interpreter[form][expr] 返回 expr,否则返回 Failure[…].
范例
打开所有单元关闭所有单元基本范例 (8)
选项 (9)
GeoLocation (1)
默认情况下,使用用户的 $GeoLocation:
属性和关系 (4)
Interpreter 的规范也被用于创建 FormObject、FormFunction 和 APIFunction:
Interpreter 的头部是可选的,但它被用于指定选项时是非常有用的:
用 RepeatingElement 和 CompoundElement 来解释复杂的结构:
Alternatives 也可被用于解释有不同形状的数据:
可能存在的问题 (3)
如果设置了非 Automatic 的 AmbiguityFunction,则第二个参数位置的 test 会被应用于解释的结果,这可能会导致失败:
Interpreter["String"] 接受空字符串. FormFunction 则不然,它里面空字符串和空域被认为是相等的:
巧妙范例 (1)
根据街道地址,获取白宫的 GeoPosition:
文本
Wolfram Research (2014),Interpreter,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Interpreter.html (更新于 2016 年).
CMS
Wolfram 语言. 2014. "Interpreter." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2016. https://reference.wolfram.com/language/ref/Interpreter.html.
APA
Wolfram 语言. (2014). Interpreter. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Interpreter.html 年