Quantcast
Viewing all articles
Browse latest Browse all 8691

Pythonでは`+++`も`+++++`も`++++++++`も許される

バズっているようなので相乗りします。

C/C++ では+++は許される
JavaScriptで+++は許されない+ ++は許される

Pythonでは+++++++++++++++も許されます!

a=1b=2print(a+b)# OK
print(a++b)# OK
print(a+++b)# OK
# ...
print(a+++++++++++++++b)# OK

すなわち、+を繋げてどんなに長い「演算子」をつくったとしても動きます。

上でつくった「演算子」は、前置演算子としても使えます。

上でつくった「演算子」は2項演算子ですが、同様に前置演算子バージョンもあります。

a=1print(+a)# OK
print(++a)# OK
print(+++a)# OK
# ...
print(+++++++++++++++a)# OK

-----でもよい。

+が嫌いな方は、-を使って「演算子」を構成してもよいでしょう。

a=1b=2print(a-b)# OK
print(a--b)# OK
print(a---b)# OK
# ...
print(a---------------b)# OK

もちろん、前置演算子バージョンも使えます。
また、+-を適宜まぜあわせて使ってもいいです。(+---+-+++-+のように)

用途

ソースコードの区切り

print("first")print("second")print("third")0-+-+-+-+-+-+-0print("100 times")

JavaScriptだとダメ

Javascriptの場合、以下のように3文字以上の「演算子」はエラーとなる可能性が高いです。

leta=1console.log(+++a)// NGconsole.log(a+++)// NGconsole.log(++-a)// NG

ただし、以下はOKです。

leta=1,b=2console.log(-++a)// OKconsole.log(+-+a)// OKconsole.log(a++-b)// OKconsole.log(a-++b)// OKconsole.log(a++-++b)// OK

なぜダメなの?

PythonとJavaScript (or C)の違いは、インクリメント演算子++が定義されているかどうかです。例えば+++++という「演算子」がある場合は演算子を最小一致で切り出していくので、+++++という3つの演算子に分割されます。
++演算子は右側(or 左側)が左辺値(変数)でなければならないため、エラーとなります。

思ったこと。

++が存在しない言語でも、Luaの場合は++のようにつなげて書くと++のように分割されず、エラーになるようです


Viewing all articles
Browse latest Browse all 8691

Trending Articles