最佳答案
我认为我理解 很强的打字能力,但是每次我寻找弱类型的例子时,我最终都会找到一些简单地自动强制/转换类型的编程语言的例子。
例如,在这篇名为 类型: 强与弱,静态与动态的文章中指出,Python 是强类型的,因为如果尝试:
巨蟒
1 + "1"
Traceback (most recent call last):
File "", line 1, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'
然而,这种情况在 Java 和 C # 中是可能发生的,我们并不认为它们仅仅是弱类型化的。
爪哇咖啡
int a = 10;
String b = "b";
String result = a + b;
System.out.println(result);
C #
int a = 10;
string b = "b";
string c = a + b;
Console.WriteLine(c);
在另一篇名为 弱类型语言的文章中,作者说 Perl 是弱类型的,因为我可以将一个字符串连接到一个数字,反之亦然,而不需要进行任何显式转换。
Perl
$a=10;
$b="a";
$c=$a.$b;
print $c; #10a
所以同样的例子使 Perl 弱类型化,但不是 Java 和 C # 。
天啊,这太让人困惑了
作者似乎暗示,阻止对不同类型的值应用某些操作的语言是强类型语言,而相反的意思是弱类型语言。
因此,在某种程度上,我觉得如果一种语言提供了很多类型之间的自动转换或强制转换(比如 perl) ,那么它最终可能会被认为是弱类型,而其他只提供少量转换的语言最终可能会被认为是强类型。
我倾向于相信,虽然,我必须在这个解释是错误的,我只是不知道为什么或如何解释它。
所以,我的问题是: