я не понимаю = red
Swift INIT не понимаю
struct Color {
let red, green, blue: Double
init(red: Double, green: Double, blue: Double) {
self.red = red
self.green = green
self.blue = blue
}
}
я не понимаю = red
Swift INIT не понимаю
struct Color {
let red, green, blue: Double
init(red: Double, green: Double, blue: Double) {
self.red = red
self.green = green
self.blue = blue
}
}
структур (struct
) в Swift ведут себя очень похоже на Class
и могут содержать методы, такие как инициализаторе.
При выполнении метода экземпляра self
относится к этому самому экземпляру.
Помимо этого, обратитесь к документации Apple Swift.
В вашей структуре self.red
есть экземпляр struct
, который получит значение при его инициализации.
Рассмотрим примеры вы объявили в вашем struct
let red, green, blue: Double
означает, что они еще не инициализированы, так что вы должны начать его с init()
таким образом:
init(red: Double, green: Double, blue: Double) {
self.red = red //when you will initialise struct self.red will get it's value
self.green = green //when you will initialise struct self.green will get it's value
self.blue = blue //when you will initialise struct self.blue will get it's value
}
Теперь, когда все вы используете struct
с новой переменной:
let foo = Color(red: 1.0, green: 1.0, blue: 1.0)
вы должны дать ему это экземпляры значения это путь
Color(red: 1.0, green: 1.0, blue: 1.0)
и вы не можете инициализировать его таким образом:
let test = Color()
И это даст вам ошибку.
Но помните:
При присвоении значения по умолчанию хранимого имущества, или его начального значения в пределах инициализатора, значение этого свойства устанавливается непосредственно, не вызывая никаких наблюдателей на недвижимость ,
Это означает, что если назначить значения по умолчанию для экземпляров struct
так:
struct Color {
let red : Double = 1.0
let green : Double = 1.0
let blue: Double = 1.0
}
Вам не нужно инициализировать его, потому что они будут автоматически инициализируется, и вы можете использовать это без инициализаторов таким образом:
let foo = Color()
, и это даст вам результат {red 1, green 1, blue 1}
, и вы можете присвоить значение STRUCT экземпляров следующим образом:
struct Color {
var red : Double = 1.0
var green : Double = 1.0
var blue: Double = 1.0
}
var test = Color() //{red 1, green 1, blue 1}
test.red = 2.0 //{red 2, green 1, blue 1}
test.green = 2.0 //{red 2, green 2, blue 1}
test.blue = 2.0 //{red 2, green 2, blue 2}
переменных красные, зеленый и синий объявлены в структуре. и вы пытаетесь получить к ним доступ в методе init.
so self.red ссылается на переменную экземпляра этого конкретного объекта структуры.
, например, если создать два экземпляра структуры Color
var color1 = Color(26,120,180);
var color2 = Color(160,120,180);
println(color1.red);//will print 26
println(color2.red);//will print 160
в приведенном выше примере:
линии 1: он будет называть Init() метод инициализирует структуры в этом вызов метода самости относится к экземпляру color1 структуры Color.
строка 2: он вызовет метод init() для инициализации структуры в этом методе. Вызов self относится к экземпляру color2 структуры Color.
что данные инкапсулирования
надеюсь, это ясно. Дайте мне знать в случае каких-либо сомнений.
Что вы не понимаете в отношении self.red? И каков ваш вопрос, на самом деле? – courteouselk
Я бы рекомендовал загрузить бесплатную книгу Swift от Apple и дать ей хорошее чтение. –