Вот почему ваш код не имеет смысла. У вас есть класс с именем Site
, который предположительно можно использовать для описания любого веб-сайта. Таким образом, у него не должно быть свойства для указанного c сайта с именем reddit
, потому что тогда каждый отдельный экземпляр класса несет свойство reddit
.
Ваша функция makeReddit
не должна иметь параметров для адреса и года, потому что это для создания указанного c сайта "reddit.com" с указанием c 2005 года.
Кроме того, ваша функция возвращает значение свойства, но свойство инициализируется вызовом этой функции, так что это циклическая зависимость. И функция, и свойство просто вернут null. Вы никогда не вызываете конструктор сайта нигде, поэтому экземпляр сайта никогда не создается.
И поскольку функция не делает ничего внутреннего по отношению к какому-либо конкретному c Site
, а вместо этого создает новый экземпляр сайта, он не должен быть определен внутри класса Site
.
Чтобы сделать шаг назад и определить проблему, вам нужна функция, которая создает сайт с определенными c значениями адреса и года (не входными параметрами). Поскольку он создает Site, он не должен быть функцией-членом Site, поэтому он должен быть определен на верхнем уровне (он также может быть в сопутствующем объекте, но пока не беспокойтесь об этом).
Итак, это должно выглядеть так:
class Site(val address: String, val foundationYear: Int)
fun makeReddit(): Site {
return Site("reddit.com", 2005)
}