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