В Котлине я изучаю ковариант (подтип можно использовать вместо супертипа). Написали там что-то вроде правила. но мне кажется это неправильным. Это написано:
Однако вы не можете использовать out, если у класса есть параметры функции или свойства var этого универсального типа.
Но я думаю, что слово или следует заменить словом и, потому что в ситуации, когда в классе есть функция, которая получает тип в качестве параметра, если свойство общий тип — это val, а не var, и ущерб не может быть причинен, поскольку любое присвоение свойству val невозможно. Я прав или то, что написано в книге правильно, и я что-то упускаю?
Редактировать: я только что понял (согласно некоторому сообщению, которое я видел на этом форуме), что единственная ситуация, когда параметр может быть проблемой, хотя свойство объявлено как val, в случае, если у нас есть контейнер типа T, скажем, список, тогда может возникнуть проблема, если мы попытаемся добавить в список, но если у нас нет контейнера, я не вижу ситуации, когда получение типа параметра может вызвать проблемы в то время как свойство val. Я прав?