🔥

Тред (Глеб Лукьянец)


Раз вспомнили свифт, давайте поговорим про его аспекты, которые откровенно разочаровывают. Без порядка и уровней значимости.

Первое, что приходит в голову, из моего недавнего: key paths не работают со статическими полями.

В свифте есть dynamicMemberLookup, который позволяет строить интересные вещи вокруг lookup pattern: семантические ресурсы на манер android.R; структурированные API; иерархические системы настроек и вообще любой DSL, где пригодилась бы "умная" точка.
notion image

Вот только из-за того, что нельзя построить KeyPath на статическое поле или подтип, этот тип T на картинке выше оказывается зачастую изуродован бессмысленными пропертями. А иные интересные вещи и вовсе сделать невозможно

Вообще, на самом деле, кажется что все эти кипасы и прочие попытки сделать first class properties вообще не нужны, и лучше попытаться устранить ложную дихотомию property vs method. Но об этом как-нибудь в другой раз