用于基于语音学家的人/机接口部件的系统和方法_3

文档序号:9375188阅读:来源:国知局
用户变化的特性(例如目前地理位置)。可基于 关于用户或数据的信息,例如用户的家乡文化、用户当前位于的地方的文化、表示的数据类 型等来自动调节格式化。例如,使用根据本公开的实施方案,应用程序软件开发者可以更简 单和更可维护性的形式重写来自表3的代码,如下表4所示:
[0063] double η = 1234567. 89 ;
[0064] var x = Linguist. Represent (n). AsDefault ();
[0065] 表 4.
[0066] 表4的格式有益地限制了对应用程序软件开发者可用的选项和选择,从而限制复 杂性。例如,当存在表3的代码例子时,不存在具有不明显语法的多个调用参数的列表。具 有使用不一致或不适当的数字格式化,应用程序软件开发者具有更少选择。应用程序软件 开发者可依赖本发明描述的实施方案以在软件开发期间隐藏数字格式化的实施细节,并且 允许应用程序软件开发者集中在应用程序的其它部分上,并且以更高水平的抽象设计应用 程序软件。这对于应用程序的用户很可能导致更一致的用户经验,因此导致更高的用户满 意度。
[0067] 表4的格式包括"AsDefaultO"函数调用的使用。此函数调用促使数值"η"的表 示对于要表示的数值"η"处于最通用形式。如果数值"η"表示普通数字,则AsDefault () 将等同于调用AsNumberO。如果数值"η"表示货币,则AsDefaultO调用将等同于调用 "AsCurrencyO "。这提供了灵活性的基于数据类型的格式化能力,所述格式化能力免除应 用程序软件开发者必须知道特定变量的数据类型。
[0068] 根据本公开的实施方案提供了其它优点。例如,假设软件应用程序开发者期望 向用户显示这一数量的简短版,代替全部数量(例如货币值可舍入到最近的一千美元或 一百万美元并且以一千美元或一百万美元的单位表示的财政报告,可选择地具有例如"K" 或"M"的后缀以表示适于数字数据的数据类型的数量级)。简短数字的特征(例如适当后 缀、简短数字的格式化、适当舍入、有效数字的数量)可依赖全部数量的数据类型。现有技 术(例如MSDN. NET)缺少显示具有数字的数据类型特有的特性的简短数字的这种能力,但 是实施方案自然支持使得应用程序软件开发者使用如下数据的不同方面或表示来表示数 字数据的AsAspectO方法和函数调用。因此,如果"η"是普通数值(例如不表示货币、时 间、电话号码等的十进制数),则实施方案可通过使用如下表5示出的代码实现,以产生在 表5的意见中列出的输出。在该实例中,"Μ"被用作普通数值的后缀以表示"百万"(例如 一百万或一百万的乘数的单元)。
[0069] double η = 1234567. 89 ;
[0070] var x = Linguist. ForUser(u). Represent(n). AsAspect();
[0071] //输出 1.23M
[0072] 表 5.
[0073] 在另一个示例中,假设"n"表示货币数据类型。实施方案可通过使用如下表6示 出的代码实现,以产生在表6的意见中列出的输出。
[0074] Currency c = new Currency(1234567. 89);
[0075] var x = Linguist. ForUser(u). Represent(c). AsAspect();
[0076] //输出 $1.23mil
[0077] 表 6.
[0078] 在表6的另一个示例中,"mil"用作货币值的后缀以表示"百万"(例如一百万或 一百万的乘数的单元)。此外,包括货币符号。
[0079] -般而言,例如普通数字的不同数据类型与货币之间的特征(例如后缀或其他格 式化)可根据文化而改变,因此可以是文化特定的。例如,英语词"million"翻译成俄语的 "μ H π JI H 〇 H",因此表示一百万的后缀在俄国文化中可以不同。M在某些文化中一般是 数字的标准,但是英国用户对于货币使用"mil"的缩写。本文中使用的这些特定缩写选择 用于说明,并且考虑其它选择和组合。根据本公开的实施方案隐藏了数字格式的文化特定 和系统特定定义的复杂性。如果适当定义改变(例如具有不同家乡文化的不同用户,或在 多个文化之间移动的用户),则可以使用适当的定义而不影响如下应用程序软件代码。
[0080] 设定也可以允许使用领域。例如,将使用领域设定为"金融"可导致数字被缺省解 释为货币,并且可被配置来通过将这些数字舍入为最接近的千位数且减少三个最低有效位 数来显示这些数字。另一方面,使用领域可以被设定为"科学",这可能导致数字被缺省解释 为普通数字,并且可被配置来通过科学格式(例如具有尾数和指数)来显示这些数字。使 用领域可以影响用于表示数字类型的后缀。例如,"金融"使用领域可导致"thou"用作后缀 来表示以一千为单位的货币数据类型,但是"新闻"使用领域可能导致"G"( 口语"一千美 元(grand)"的缩写)用作后缀来表示以一千为单位的货币数据类型。
[0081] 实施方案提供的范例的用途是应用程序软件开发者不需要关注数据表示。表示细 节(例如格式化)可通过实施方案管理,因此当开发应用程序软件时允许应用程序软件开 发者集中于更高的抽象层次。实施方案提供了一致的调用接口以供应用程序软件开发者使 用(例如"Linguist. R印resent")。应用程序软件开发者仅需要以抽象思维考虑想法"表 示",接着实施方案将根据系统设定(例如文化设定、使用领域设定等)注意表示或解释与 数字类型一致的数字数据。
[0082] 当解释用户提供的串值时,例如通过与文化设定、使用领域设定等一致地解释来 自用户的文本输入并将文本输入转换成数值,根据本公开的实施方案也可使用。例如,应用 程序软件开发者可对应用程序进行编码以从用户接受串值,接着呼叫或调用实施方案提供 的软件例程以将串值解释为特定数据类型。与现有技术相比较,实施方案具有能够解析风 俗数据类型和应用程序特定数据类型(例如"货币"数据类型)的附加优点。实施方案还 更易理解和更一致地处理文化考虑。
[0083] 根据本公开的实施方案还可提供称为"观众"的设定,该设定配置实施方案以 将输入串值特性的解释剪裁为对串值来自的源特定,或将输出串值特性的格式化剪裁为 对如何或者哪里将使用格式化的输出串值特定。例如,如果"Audience. User"参数与 Linguist. InterpretO调用一起使用,则实施方案将假设输入串的源为观众的成员,因 此将灵活地处理组分隔符、空白等。然而,如果实施方案将使用"Audience. System"参 数和Linguist. InterpretO调用,则实施方案可以在解析输入串值上更严格并且需要与 InvariantCulture设定的值(例如不基于程序运行的程序的环境而改变的文化设定,如用 户的家乡文化)一致的值,因为实施方案可假设生成串值的系统在坚持校正用于输入串值 的语法上与人相比将更严谨。当使用"Audience. System"参数时,对输出串值的处理将类 似地更严谨。
[0084] 例如,表7示出如何能够从存储设备环境读取值的示例。AsUInt32和TryAsUnt32 变化两者均尝试执行相同操作。然而,一个如果故障,则将导致排除(即错误条件)和停止 程序执行,而如果解释错误,则另一个将返回"错误",但是程序执行将不停止。
[0085] uint X = Linguist. Interpret("9000") · AsUInt32(Audience. System);
[0086] uint y ;
[0087] bool parseOk = Linguist. Interpret ("9000") · TryAsUInt32 (out y,A udience. System);
[0088] 表 7.
[0089] 根据本公开的实施方案可通过使用根据如下表8示出的IInterpreter接口创建 的对象进行操作。IInterpreter用于创建与另一个实体(例如人或另一个计算机系统)提 供的输入串值的接收和解释相关的对象。表8示出包括32位整数、64位整数、双精度、单精 度浮点、货币、电话号码和日期/时间的数据类型。然而,表8的范例能够延伸到另外的数 据类型。表8示出具有如下用途的功能接口 :创建每个这种数据类型;根据观众创建每个这 种数据类型;根据输入串是否对应与上述数据类型的一种返回布尔值;转换不同时区的时 间数据;以及将时间数据转换成UTC。功能接口可延伸到其它函数。
[0090] public interface !Interpreter{
[0091] uint AsUInt32 ();
[0092] uint AsUInt32 (Audience from);
[0093] bool TryAsUInt32(out uint v);
[0094] bool TryAsUInt32 (out uint VjAudience from);
[0095] int Aslnt32();
[0096] int Aslnt32 (Audience from);
[0097] bool TryAsInt32 (out int v);
[0098] bool TryAsInt32 (out int VjAudience from);
[0099] ulong AsUInt64 ();
[0100] ulong AsUInt64 (Audience from);
[0101] bool TryAsUInt64 (out ulong v);
[0102] bool TryAsUInt64 (out ulong VjAudience from);
[0103] long Aslnt64 ();
[0104] long Aslnt64 (Audience from);
[0105] bool TryAsInt64 (out long v);
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1