这不是错误。这是您的代码未能按照您的目标工作的失败。
我说什么来着?到目前为止,大家都说了些什么?您不能像以前那样设置默认值。
即使您传入数字18作为限制,您在内部做的第一件事是将该值重置为21。
相反,您需要考虑如何进行测试,以确定是否提供了限制。
编辑:( 18个月后)
现在已经有了几十个答案,而且都很长,我将展示我将如何写它。
函数Tooyoung = under_age(年龄,限制)
如果Nargin < 2, limit = 21;结束
我的大部分代码实际上都是注释。帮助是非常重要的,因为它允许您在明年忘记代码是如何编写的,或者忘记参数的含义时快速使用代码。
将内部注释看作是对自己的提醒,从现在开始的一年内,当您查看代码时,由于某种原因需要更改代码,或者上帝保佑,您需要调试它。我推荐的目标是每行代码都有一行注释,或者最坏的情况是每行代码中完成的重要事情都有注释。
评论是免费的!由于所有评论,良好的代码应该看起来很好。由于所有评论,我的解决方案代码才冗长。
还有什么?
请记住,白色空间非常重要。它使您的代码易于阅读。
使用智能的、有意义的变量名。好的助记变量名有助于使代码自文档化,并且同样易于阅读。当您扫描代码时,您不希望不断返回并被迫记住变量wxxyy的作用?
正如我所说,更好的代码将包括测试,以验证年龄和限制是否实际上是数字变量。最好的代码是友好的代码。当它失败时,您希望以友好的方式将代码转移到小型,告诉该人被认为是错误的。你不想发生的是代码做了一些螺旋和意外的东西,或者返回一些随机难以理解错误消息。最好的代码可以轻松地使用该代码。
这段代码中的最后一个测试是一个矢量化测试,如果你像这样调用代码:
太年轻=年龄不足([12 5 29 75],21)
它将工作并返回一个结果向量。向量化代码通常是好的代码,因为当用户想在一行中多次使用代码时,它允许用户不被强制使用循环。
最后,我能写出只需要一行代码的代码吗?因此,测试是否提供了限制,并在一行中返回与年龄的比较?可能吧,但那样会变得不必要的复杂,难以阅读和调试。在代码的质量或运行速度方面不会有任何收获。好的代码要简单、易读、易使用、易调试。