爱丽丝:什么?“Cody”* 5 ==“codycodycodycody”?你在开玩笑吧!
鲍勃不,我是认真的!Python支万博1manbetx持字符串的“乘法”,这实际上意味着字符串的复制!
爱丽丝:真的吗?
鲍勃现代语言(c++, Java, Python等)倾向于使用本地操作符(通过重载)来执行简单的字符串操作,例如+用于字符串连接(例如,“Cody”+“Cody”==“CodyCody”)。此外,Python采用*来执行字符串复制。从R2016b开始,MATLAB遵循了同样的约定,引入了+操作符来执行字符串连接(参见43663题以Cody为例)。然而,从R2017b开始,不支持在MATLAB中执行字符串复制的*操作符(或任何万博1manbetx其他操作符)。
爱丽丝:听起来好像有个缺口……
鲍勃你说对了。现在,我想让您通过使用任何方法(最好是重载)来填补空白,使*在Cody中执行字符串复制(类似于Python中的*),例如,
>>“Cody”* 2 ans =“CodyCody”
>> 3 *“Cody”ans =“CodyCodyCody”
爱丽丝:明白了。让我试试。
这样重新定义mtimes有点可怕!我一解出来,就删除了这个函数。
我有点忙不过来。函数y=mtimes(a,b)在我的电脑上运行2018a很好。但是在这里使用时,Cody抱怨我使用了不同的函数名,因为mtimes是内置的,这让我很失望。将名称更改为其他名称(例如asdf)会失败,因为我没有修改mtimes来处理字符串。我错过了什么?
事实上,这不是一个正确的解决方案。else分支导致无限递归。