Синтаксис
C ++ происходит в основном от C, а C не предоставляет ключевое слово function
. Вместо этого он использует определенный синтаксис для обозначения большинства функций:
[return type] [function name]([paramters]) { }
Таким образом, если было введено ключевое слово function
, мы могли бы получить более быстрый анализ и улучшить читаемость. Однако теперь у вас есть 2 разных способа объявить что-либо, и вы не можете избавиться от старого способа из-за необходимости обратной совместимости.
Но давайте предположим, что мы игнорируем аргумент обратной совместимости и предположим, что он был введен:
function int square(int a) { //1
return a * a;
}
//-----------------------------
function square(int a) { //2
return a * a;
}
case 1
просто ведет себя как индикатор ключевого слова, который имеет свои преимущества (читаемость, синтаксический анализ) и недостатки (спам объявления функций с ненужным шумом)
case 2
- это подход javascript -esque, позволяющий компилятору выяснить тип возвращаемого значения (например, auto
здесь). это, вероятно, самый эстетичный c подход, но C ++ очень типизирован c, и это добавит слой путаницы, когда он не нужен (auto
-ness может быть полезной, но, конечно, не всегда желаемой).
Таким образом, в итоге кажется, что эти средние преимущества просто не оправдывают затраты, которые были бы связаны с введением такого ключевого слова.
дополнительный бит:
, начиная с C ++ 11, языковые возможности позволили бы вам спорить о перикулярном подходе:
function square(int a) -> int {
return a * a;
}
, и это, безусловно, было бы неплохим solid решением! Но похоже, что обсуждение ключевого слова function
давно затихло. Это понятно, когда есть много других, возможно, более важных, приоритетов для обсуждения при внедрении инноваций в новейшие выпуски C ++.