Знак плюс +используется для сложения и конкатенации строк, но его компаньон: знак минус -, как правило, не виден для обрезки строк или какого-либо другого случая, кроме вычитания. В чем может быть причина или ограничения для этого?
Рассмотрим следующий пример в JavaScript:
var a = "abcdefg";
var b = "efg";
a-b == NaN
// but
a+b == "abcdefgefg"
+оператор перегружен двумя совершенно не связанными значениями «числовое сложение» и «конкатенация строк». К счастью, некоторые языки предоставляют отдельный оператор конкатенации, такой как .(Perl5, PHP), ~(Perl6), &(VB), ++(Haskell),…
->(подумайте о разыменовании доступа к элементу в C, поскольку вызовы виртуальных методов обязательно включают в себя указатель-подобную косвенность). Не существует закона языковой структуры, который требует вызовов методов / доступа к элементу для использования .оператора, хотя это все более распространенное соглашение. Знаете ли вы, что в Smalltalk нет оператора вызова метода? Простое сопоставление object methodдостаточно.