Показать сообщение отдельно
Старый 18.12.2015, 03:20   #34  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Для меня семантики в языке программирования нет только у текста комментария.
)))))
ну, как же? а макросы?
макросы не имеют семантики, но имеют синтаксис.

var/val в Котлине не имеет семантики, а просто заставляет компилятор сделать некие действия за программиста (некие суперинтеллектуальные макросы, которые позволяют объявить методы - геттеры и сеттеры).
var/val в Котлине ничего не значат, если эти некие действия программист уже сделал вручную.

Поэтому в Котлине семантику имеют только методы. Или отсутствие методов. Так работают соглашения.


про семантику:
почитай, например, про const у Страустрапа. Еще со второго издания const имеет семантику в C++.
Особенно меняется смысл у функций с const-аргументами и const-результатами.
Код:
const char* pc = "asdf"; // указатель на константу
pc[3] = 'a'; // ошибка
pc = "ghjk"; // нормально

char *const cp = "asdf"; // указатель-константа
cp[3] = 'a'; // нормально
cp = "ghjk"; // ошибка

const char *const cpc = "asdf"; // указатель-константа на const
cpc[3] = 'a'; // ошибка
cpc = "ghjk"; // ошибка

pc = cp; // ошибка?
cp = pc; // ошибка?
cpc = pc; // ошибка?
pc = cpc; // ошибка?
cpc = cp; // ошибка?
cp = cpc; // ошибка?

// 4 разные сигнатуры! 
char* strcpy(char* p, const char* q); // не может изменять *q 
const char* strcpy(char* p, const char* q); // не может изменять *q, возвращает указатель на константу
char*const strcpy(char* p, const char* q); // не может изменять *q, возвращает указатель-константу
const char*const strcpy(char* p, const char* q); // не может изменять *q, возвращает указатель-константу на const


кстати, const в ax7 похоже не имеет семантики, а только синтаксис )
mfp: X++ in AX7: Const keyword
надо будет проверить конструкцию
X++:
const List myList1;
const List myList2 = new List();
если не компилируется первая строчка, значит const имеет только синтаксис. Как и var/val. Только сильно попроще.

Последний раз редактировалось mazzy; 18.12.2015 в 03:32.