August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
现在的get_int()函数中还是混合着读取输入的代码和输出提示信息的代码。对于一个简单程序来说,这可能没有什么问题。但在一个大型程序中,我们可能想要对用户输出不同的提示信息。例如,我们可能想要这样来调用get_int():
一种可能的实现如下:
生成任意提示信息是很困难的,所以我们采取了“固定风格”式的处理方式。这种处理方法可以生成任意可变的提示信息,比如支持很多自然语言(如阿拉伯语、孟加拉语、中文、丹麦语、英文以及法文),因此通常情况下是被人们所接受的。但对于初学者来说,这些都是超出学习范围的内容。
需要注意的是,我们的解决方案仍是不完整的:不进行范围检查的get_int()版本仍然会“信口胡言”。这里所体现出的深层次的问题是:“工具函数”会在程序中很多地方被调用,因此不应该将提示信息“硬编码”到函数中。更进一步,库函数会在很多程序中被使用,也不应该向用户输出任何信息——毕竟,编写库的程序员甚至可能不知道使用库函数的程序所运行的计算机是否有人在操作,因此在库函数中输出信息有可能毫无意义。这也是为什么我们的error()函数并没有输出任何错误信息(参见5.6.3节),因为一般来说,我们无法知道向何处输出。