---
title: "MapForce 中的“switch”语句与“查找表”的比较"
date: "2011-05-17"
categories: 
  - "data-integration"
tags: 
  - "altova"
  - "blog"
  - "data-integration"
  - "data-mapping"
  - "legacy-data"
  - "mapforce"
  - "software-tools"
description: 本文比较了在 Altova MapForce 中使用开关语句和查找表两种方法，并重点介绍了在构建高效的数据映射解决方案时，应该在什么情况下选择哪种方法。
---
Status: #blog

Tags:  #altova #blog #data-integration #data-mapping #legacy-data #mapforce #software-tools

Categories: [data-integration](/blog/zh/category/data-integration.md)
# MapForce 中的“switch”语句与“查找表”的比较

与软件开发人员合作的诸多优点之一在于，您不仅可以创造前所未有的新事物，还能了解其他人的思维方式，观察他们在面对设计难题时如何寻找不同的解决方案。我们最近发布的一篇文章中，一位软件开发人员发表了评论，文章标题是： [可扩展的条件语句，在 MapForce 中类似于开关语句](https://www.altova.com/blog/2011/04/expandable-if-else-works-like-switch.html) 关于我们使用的其中一个例子，读者指出，我们的第二个例子所展示的问题，如果采用其他方法，可以得到更优雅的解决方案 [Altova MapForce](https://www.altova.com/zh/mapforce.html) 使用 Value-Map 的方式比使用我们扩展的 if-else 语句更有效。以下是最初的示例，它接收月份作为字符串，并需要生成相应的数字：

[![MapForce中关于“如果-否则”语句的示例，已进行扩展](https://lh4.ggpht.com/_REdrfeVqYdU/Tc10Xf41UHI/AAAAAAAAAYc/8PxVPCcIyA4/originalExample_thumb%5B2%5D.png?imgmax=800 "If-Else in MapForce")](http://lh3.ggpht.com/_REdrfeVqYdU/Tc10W9gCFsI/AAAAAAAAAYY/awJZUbwdlQc/s1600-h/originalExample%5B4%5D.png) 

在 MapForce 中，"值映射" (Value-Map) 是一种替代方案，它作为一种查找表发挥作用，而 "扩展的 If-Else" 语句则类似于一个开关语句。以下是使用 "值映射" 替代 "扩展的 If-Else" 语句后的映射方式： 

[![MapForce 中的“值映射”替代方案 ](https://lh4.ggpht.com/_REdrfeVqYdU/Tc10X_1DapI/AAAAAAAAAYk/mj6Zql6R4qw/valueMap_thumb%5B2%5D.png?imgmax=800 "Value-Map in MapForce ")](http://lh6.ggpht.com/_REdrfeVqYdU/Tc10Xn36yzI/AAAAAAAAAYg/AQFsPDaUUHE/s1600-h/valueMap%5B4%5D.png) 

是的，就是这样。与我们最初构建的“扩展的条件语句”那样，通过复制、粘贴和修改一系列元素来实现不同，使用“值映射”功能，我们可以轻松地在它的属性对话框中创建整个查找表 

[![MapForce 中的“值映射属性”对话框](https://lh4.ggpht.com/_REdrfeVqYdU/Tc10YezxYsI/AAAAAAAAAYs/Z1F3erUvweo/valueMapProperties_thumb%5B2%5D.png?imgmax=800 "Value-Map Properties in MapForce")](http://lh6.ggpht.com/_REdrfeVqYdU/Tc10YOTQBuI/AAAAAAAAAYo/zahnOsDlnrA/s1600-h/valueMapProperties%5B4%5D.png) 

我们同意评论者的观点——对于我们选择的问题，Value-Map 的确比其他方法更有效，因为它创建起来更快、更简单！ Value-Map属性中的表格在MapForce中也更加简洁易懂[生成的映射文档](https://www.altova.com/zh/mapforce/mapping-documentation.html) 比我们最初的扩展型条件语句结构更简洁。 当然，你做不到 _始终_ 将扩展的条件语句（if-else语句）替换为值映射表。 进入“值映射”的数据必须与输入表格中的某个单一值相__相等__，才能生成特定的输出结果。而“扩展的条件判断”功能则允许您设置一系列条件，并使用不同的逻辑测试。 有时，数据转换项目的具体情况决定了是否应该使用切换元素，还是查找表，这需要根据实际情况进行判断。 假设您的项目接收到的输入是一个数字，该数字代表电磁光谱中的一个波长，并且您希望分别处理紫外线、可见光和红外线能量。 在这种情况下，我们可以使用扩展的“如果-否则”结构来测试输入值的范围。 映射中的“扩展的条件判断”部分可能如下所示： 

[![Altova MapForce 中扩展的条件判断（If-Else）映射功能](https://lh5.ggpht.com/_REdrfeVqYdU/Tc10ZKz3yfI/AAAAAAAAAY0/490MeBeYGQc/visibleLight2_thumb%5B2%5D.png?imgmax=800 "Expanded If-Else in MapForce")](http://lh3.ggpht.com/_REdrfeVqYdU/Tc10Yt3rsnI/AAAAAAAAAYw/qXuhyxpsMqY/s1600-h/visibleLight2%5B4%5D.png) 

如果输入是整数，您也可以使用“值映射”功能来构建解决方案，但您需要创建一个非常大的查找表。 此外，如果后续项目需求发生变化，输入变为小数，或者您需要按名称单独过滤每个可见颜色，该怎么办？ 实际上，[Altova MapForce](https://www.altova.com/zh/mapforce.html)是一个非常棒的图形化工具，它代表了一个完整的软件语言工具箱，可以帮助您摆脱复杂的编程语言语法，并提供丰富的组件，您可以灵活地组合这些组件来解决您自己的数据映射、转换和集成难题。 

**亲自体验一下，将 MapForce 应用于您自己的数据映射项目，看看它有多么容易上手。** [**下载免费的 30 天试用版**](https://www.altova.com/zh/download/mapforce/data_mapping_enterprise.html) **的 MapForce。**
