http://xeno-by.livejournal.com/ ([identity profile] xeno-by.livejournal.com) wrote in [personal profile] juan_gandhi 2013-01-24 08:06 am (UTC)

Я бы в честь этого хотел бы отметить две техники, которые делаются возможными благодаря имплиситам.

Первая - то, что при помощи имплиситов можно разрешать или запрещать типы. Скажем, если ожидаемый тип результата вызова флаттена не подходит ни под один имплисит, то будет ошибка компиляции. Это отлично описано в посте.

Но есть еще и вторая. Если ожидаемый тип (pt в терминологоии тайпера) неизвестен, то имплисит серч позволяет его вывести!! Именно таким образом работает CanBuildFrom, позволяя мапу над строками возвращать строки, а мапу над листами - листы. И все это при помощи только одного определения функции map (в плане, достаточно определить map в базовом трейте коллекций и потом ничего нигде оверрайдить не придется - нужные типы будут выводиться автоматом для каждоо конкретного случая как надо).

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting