Scripting 动态语言中隐式转换的利弊?
我并不真正使用动态/脚本语言。所以我不知道它的缺点、优点等等。在与某人交谈时,他提到python可以隐式地将一个对象转换为您想要的,但甚至不尝试 人们似乎喜欢python。那么,动态语言中的隐式转换是否糟糕呢?坏吗?(他想知道)在动态语言中,隐式转换的优点和缺点是什么?优点:Scripting 动态语言中隐式转换的利弊?,scripting,dynamic,implicit-conversion,Scripting,Dynamic,Implicit Conversion,我并不真正使用动态/脚本语言。所以我不知道它的缺点、优点等等。在与某人交谈时,他提到python可以隐式地将一个对象转换为您想要的,但甚至不尝试 人们似乎喜欢python。那么,动态语言中的隐式转换是否糟糕呢?坏吗?(他想知道)在动态语言中,隐式转换的优点和缺点是什么?优点: 在大多数情况下,“你的意思是什么” 它允许您半自由地将字符串视为数字,反之亦然。我曾在Perl中使用过这一点来对数字进行字符串操作,否则将涉及一系列不明显的数学运算 缺点: 当它确实失败时,它常常以神秘的方式失败。例
- 在大多数情况下,“你的意思是什么”
- 它允许您半自由地将字符串视为数字,反之亦然。我曾在Perl中使用过这一点来对数字进行字符串操作,否则将涉及一系列不明显的数学运算
- 当它确实失败时,它常常以神秘的方式失败。例如,在知道八进制数的语言中,前导零可能会引起奇怪的问题00'到'07'可以正常工作,但'08'和'09'将中断
- 有时候,你真的很想知道它的类型。示例:PHP及其在出现故障时返回
的习惯。如果false
返回0,则在$a的开头找到$bstrpos($a,$b)
表示根本找不到它。但是隐式转换使0和false
比较相等。(幸运的是,PHP有false
操作符来缓解这种情况。)=
- 转换需要CPU周期。这并不多,但如果你不想要隐式转换魔法,为什么要花钱呢
- 我喜欢在用例方面看到这一点;所以我的答案是,这实际上取决于你想做什么
如果您正在编写一个web应用程序,那么这将有助于您编写更干净的代码(代码中没有很多函数和方法调用,仅用于转换类型),而向下的是,它可能会产生一些神秘的错误,在这种情况下(web应用程序)编写更清晰、更易懂的代码有助于降低开发和更改的成本,因此可以忽略修复此潜在错误的成本。
但是,例如,如果您正在为安全关键硬件(如航天飞机)编写固件,任何潜在的错误都可能花费数百万美元、数年、数年的时间和精力,因此在这种情况下,为了保护项目的整体目的,您应该忍受编写一些转换函数和方法的痛苦