https://kotlinlang.org logo
#russian
Title
# russian
u

umar

11/01/2017, 11:29 AM
После введения литералов массивов для аргументов аннотаций возникла идея более общего механизма для коллекций. Что, если определять тип коллекции из контекста, например, из типа проперти или типа параметра функции. А для возможности замены кастомного билдера коллекции литералом использовать аннотации вроде
@CollectionBuilder
и
@KeyValueCollectionBuilder
. Можно проаннотировать существующие в стандартной библиотеке билдеры вроде arrayOf,р listOf, mapOf, etc. Примеры :
Copy code
fun <T> List<T>.contains(elements: List<T>) = containsAll(elements)

val list = listOf(1, 2, 3)
list.contains([1, 2])
[2, 3] in list

class Person {
  lateinit var friends: List<Person>
  lateinit var grades: Map<String, Int>
}

val alice = Person()
alice.friends = [bob, charlie]
alice.grades = [
  "math" : 92,
  "history" : 89,
  "lang" : 97
]
s

snrostov

11/01/2017, 12:07 PM
Вот тут предлагали что то аналогичное https://discuss.kotlinlang.org/t/plans-for-collection-literals/2049/13
ну и там в треде куча других интересных предложений
u

umar

11/01/2017, 12:54 PM
Спасибо за ссылку, пропустил как-то.
6 Views