Я довольно новичок в Swift и узнаю о struct
s.Однако у меня есть проблема, которая может показаться очевидной, но я не уверен, как это сделать.Я делаю все это на детской площадке.
У меня есть struct
с именем Colour
, где я создаю цветовой тип RGB.Я хочу получить доступ к ее переменным (например, сделав yellow.red
, который будет читать и записывать переменную, чтобы найти значение красного цвета в желтом цвете).
struct Colour {
var red: Int
var blue: Int
var green: Int
var rgb: [Int] // <- I don't want to have this variable, I want to make the struct Colour be this array
init(red: Int, green: Int, blue: Int) {
self.red = red
self.green = green
self.blue = blue
rgb = [red, green, blue]
}
}
Вызов:
let red = Colour(red: 255, green: 0, blue: 0) // Colour
red.red // 255
red.green // 0
red.blue // 0
red // Colour
red.rgb // [255, 0, 0]
Когда я получаю доступ к red
, я хочу, чтобы он автоматически возвращал значение red.rgb
без переменной.
Так как я могу вызвать red
и вернуть Array
со значением [255, 0, 0]
?
Примечания:
A get
или set
не может быть реализовано
Я не могу использовать Colour
в качестве переменной, так как мне нужна инициализация
return
ключевое слово не может быть использовано, так как struct
s не работает таким образом
Редактировать
Извините за недостаточно четкое разъяснение.Я хотел вернуть [Int]
, но это явно не стоит того, что я пытался изначально.
Решения с протоколами определенно работают, если вы хотите вернуть строку, поэтому я принялответ.
Изменить 2
Теперь у нас есть рабочий ответ, используя type alias
!