Таким образом, мы можем добавить именованный элемент списка, выполнив
lapply(lst, function(x) c(x, p = 25))
#$m
# p
# 1 25
#$n
# p
# 2 25
#$o
# p
# 3 25
#[[4]]
#[[4]]$m
#[1] 3
#[[4]]$n
#[1] 4
#[[4]]$o
#[1] 5
#[[4]]$p
#[1] 25
#...
#...
Или с purrr::map
purrr::map(lst, ~ c(., p = 25))
данными
[ 112]На агностическом языком уровне смешивание просто добавляет функциональность к классу и больше для удобства программиста и избегать дублирования кода. Абстрактный (основной) класс формирует - отношения и допускает полиморфизм. Одна причина, почему наследование злоупотребляется, состоит в том, что это - простой способ реализовать mixins, не пишущий шаблона на языках, которые действительно не поддерживают их. Проблема состоит в том, что Вы объявляете, что полиморфное - отношения как побочный эффект, делая Ваш API более сбивающим с толку и возможно добавляя неоднозначность. Следовательно, более новые языки как D и поддержка Ruby mixins как собственные функции, позволяя удобному способу добавить набор функциональности к классу, не объявляя полиморфное - отношения.
Mixin никогда не предназначается как одинокий класс. Они просто добавляют некоторую функциональность к классу, который Вы объявляете. В Python они могут быть легко применены декораторами класса. Например, Вы могли украсить свой класс смешиванием Singleton, делая Ваш класс одиночным элементом.