Re[12]: Использование tuple
От: Gaperton http://gaperton.livejournal.com
Дата: 21.10.09 12:49
Оценка: +1
Здравствуйте, Gaperton, Вы писали:
G>-spec get_point() -> { X::integer(), Y::integer() }
G>get_point() -> ...

G>от


G>get_point() -> %% { X::integer(), Y::integer() } — да что угодно тут писать можно, можно сверху или снизу

G>...

G>отличается мало. Данный пример завязан на синтаксис Эрланга, но это неважно.


Я имею в виду — отличаются в плане возможности автоподсказки, а не контроля типов. Пример на С-подобном псевдокоде, при "хорошем синтаксисе" выглядел бы как-то так:

( int X, int Y ) get_point() { ... }

Вместо

void get_point( int & o_X, int & o_Y ) { ... }

Лучше, не так ли? И не ломает традицию синтаксиса С — возвращаемый тупл должен по возможности выглядеть похоже на аргументы функции, чтобы быть естественным продолжением языка, а не выглядеть уродливо. Сохраняя традицию С, имена X и Y должны быть доступны внутри определения функции, что, кстати, было бы офигенно удобно. Я бы сделал как-то так, добавляя туплы в С-подобный язык. Ну, разрешил бы еще писать просто return в таких случаях, вероятно, а также return с явным туплом. Разумеется, тупл сделал бы l-value.

Или же

( int /* X */, int /* Y */ ) get point() { ... }

но так делать резона нет никакого.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.