テクデップ(Techdep)

コンピュータ、プログラミング、DTP(InDesign)に関する備忘録

2 + "2" = ?

動的型付けの言語では、数値と文字列とを足そうとしたときの挙動は言語毎に異なる。今回、PerlPythonJavaScriptにおける文字列と数値とを足したときの挙動を比較した。

Perl

#!/usr/bin/perl
print "2" + "2";
print 2 + "2";

結果は次の通り。文字列同士の演算を数値同士の演算と見なす柔軟性を発揮した。

4
4

Python

print("2" + "2")
print(2 + "2")

数値と文字列との演算はできないとインタプリンタが拒絶する結果に。

22
Traceback (most recent call last):
  File "test.py", line 2, in <module>
    print(2 + "2")
TypeError: unsupported operand type(s) for +: 'int' and 'str'

JavaScript

<script>
console.log("2" + "2");
console.log(2 + "2");
</script>

文字列の結合演算となった。

"22"
"22"

まとめ

各言語の設計思想?がよく現れている気がする。Rubyの実行環境はないので今回は省略。