在动态语言中进行隐式转换的优缺点?

问题描述

| 我并不真正使用动态/脚本语言。因此,我不知道缺点,优点等。在与某人交谈时,他提到python可以将对象隐式转换为您想要的对象,但甚至不会尝试。 人们似乎喜欢python。那么动态语言中的隐式转换不好吗?不好吗(他想要)动态语言中隐式转换的优缺点是什么?     

解决方法

        优点: 在大多数情况下,“按照您的意思”。 它使您可以半自由地将字符串视为数字,反之亦然。我在Perl中用了一点点来对数字进行字符串操作,否则将涉及许多非显而易见的数学运算。 缺点: 当它确实失败时,它通常会以神秘的方式失败。例如,前导零可能会在知道八进制数的语言中引起奇怪的问题。 \ '00 \'到\ '07 \'可以正常工作,但是\ '08 \'和\ '09 \'会损坏。 有时候,您确实很想知道类型。示例:PHP及其在出现故障时返回“ 0”的习惯。如果
strpos($a,$b)
返回0,则在$ a的开头找到$ b;
false
表示完全找不到。但是隐式转换使0和
false
比较相等。 (幸运的是,PHP具有
===
运算符来减轻这种情况。) 转换需要花费CPU周期。数量不多,但是如果您不希望隐式转换魔术,为什么要为此付出代价呢?     ,        我喜欢在用例方面看到这一点;所以我的答案是,这实际上取决于您想做什么。 如果您正在编写Web应用程序,则这将有助于您编写更简洁的代码(没有大量函数和方法调用的代码,仅用于转换类型),而向下的方向是可能会产生一些神秘的错误,并且在这种情况下(Web应用程序)编写更清晰,更易理解的代码有助于降低开发和更改的成本,因此可以忽略修复这些潜在错误的成本。 但是,例如,如果您正在为安全性至关重要的硬件(例如,航天飞机)编写固件,则任何潜在的错误都可能会花费数百万美元,数年甚至数年的时间和精力,因此在这种情况下,忍受编写一些转换函数和方法以保护项目的整个目的。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...