TEL:400-8793-956
当前位置:程序、服务器

面向目标的 Swift 2.0 - 自定义初始化器

提问者: 近期获赞: 浏览人数: 发布时间:2021-06-02 10:15:02

 问:在编辑器中,我已经声明了一个名为 RGBColor 的结构体,它对 RGB 空间中的颜色对象进行建模。

 
您的任务是为对象编写自定义初始化方法。使用初始化器为前四个属性赋值。使用分配给这些属性的值为描述属性创建一个值,该值是颜色对象的字符串表示。
 
例如,给定红色值 86.0、绿色 191.0、蓝色 131.0 和 alpha 值 1.0,每个存储的属性都应保存这些值,并且描述属性应如下所示:
 
“红色:86.0,绿色:191.0,蓝色:131.0,alpha:1.0”
 
注意:Init 方法通常以相同的属性声明顺序列出参数。对于此任务,请遵循 red、green、blue、alpha 的顺序。
 
“糟糕!不要使用 Swift 创建的成员初始化器。按照说明添加您自己的自定义初始化器”
 
 结构体.swift
struct  RGBColor  { 
let red : Double let green : Double let blue : Double let alpha : Double let description : String // 在init (){ red = 86.0 green = 191.0 blue = 131.0 alpha = 1.0 description = "red: \(红色) ,绿色:\(绿色) ,蓝色:      
 
        \(蓝色) , alpha: \( alpha ) " 
} }    
 
 
答:该init方法用于使用作为参数传入的值来构造结构体的实例。挑战中给出的值只是示例,而不是硬编码。
 
因此,该init方法需要四个参数,RGB 和 A。您已经description正确完成了其中一个;这就是难点!!
 
因此,修改您的方法以获取四个颜色参数,并将传入的值分配给方法内的存储属性。
 
init (红色: Double , 绿色: Double , 蓝色: Double , alpha : Double ){ 
self . 红色=红色自我。绿色=绿色自我。蓝色=蓝色自我。阿尔法=阿尔法自我。description = "红色:\(红色) ,绿色:\(绿色) ,蓝色:\(    
    蓝色) , alpha: \( alpha ) " 
}
上一篇: 需要关于子类 init 的帮助
下一篇: 为什么实例变量(属性)是公开的?