利用数组来优化if else ---谈谈数组的本质

       初中的时候, 就学了函数, 高中的时候, 我们学习了映射的概念, 从而引出了函数的严格定义, 后来又学了数列。 我们知道数列是一种特殊的函数。

       大一的时候,我们在学C语言的函数之前先学习了数组, 那么数组的本质是什么呢? 数组的本质就是映射, 数组的本质就是函数。数组的本质是i到a[i]的映射。

 

       我们用过一些软件, 很多都提供了多语切换的功能, 下面我们来用if else模拟一下:

 

#include <iostream>
using namespace std;

typedef enum 
{
	English,
	Chinese,
	Pinyin
}Language;

int main()
{
	Language lang = English;
	
	if(English == lang)
	{
		cout << "ok" << endl;
	}
	else if(Chinese == lang)
	{
		cout << "确定" << endl;
	}
	else if(Pinyin == lang)
	{
		cout << "que ding" << endl;
	}


	if(English == lang)
	{
		cout << "submit" << endl;
	}
	else if(Chinese == lang)
	{
		cout << "提交" << endl;
	}
	else if(Pinyin == lang)
	{
		cout << "ti jiao" << endl;
	}

	
	if(English == lang)
	{
		cout << "exit" << endl;
	}
	else if(Chinese == lang)
	{
		cout << "退出" << endl;
	}
	else if(Pinyin == lang)
	{
		cout << "tui chu" << endl;
	}


	return 0;
}


     看看, 这段代码挺丑陋的, 丑陋之一在于: 重复啰嗦。 丑陋之二在于:以后如果要更改某个语言单词, 需要改动代码。 那么, 该如果改进呢? 且看数组的功能:

 

 

#include <iostream>
using namespace std;

typedef enum 
{
	English,
	Chinese,
	Pinyin
}Language;

char ok[][100] = {"ok","确定", "que ding"};
char submit[][100] = {"submit", "提交","ti jiao"};
char ex_it[][100] = {"exit", "退出", "tui chu"};

int main()
{
	Language lang = English;
	
	cout << ok[lang] << endl;
	cout << submit[lang] << endl;
	cout << ex_it[lang] << endl;

	return 0;
}


       看看, 看看,是不是美很多? 当然程序仍有缺点, 要是把语言资源优化到资源文件中, 那就更好了, 大家可以动手试试, 我就不多说了。 为什么可以如此简化呢?因为数组的本质就是映射!

 

 

      这样的地方, 太多, 太多。 你看,Objective C中的字典, 那一年, 我就是用这个东西减少了很多if else分支的。 当然最后我要说一句, switch case并不比if else好多少, 甚至有时候就是个鸡肋。

      

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值