通过这个简单的类,我得到了编译器警告
尝试在其自己的 setter/getter 中修改/访问 x
当我这样使用它时:
var p: point = Point()
p.x = 12
我得到一个EXC坏访问。如果没有明确的支持ivars,我该如何做呢?
class Point {
var x: Int {
set {
x = newValue * 2 //Error
}
get {
return x / 2 //Error
}
}
// ...
}
Swift中的setter/getter与ObjC有很大不同。该属性成为一个计算属性,这意味着它没有像ObjC中那样的支持变量,如< code>_x。
在下面的解决方案代码中,您可以看到xTimesTwo
不存储任何内容,而只是根据x
,计算结果。
请参阅有关计算属性的官方文档。
您想要的功能也可能是属性观察者。
您需要的是:
var x: Int
var xTimesTwo: Int {
set {
x = newValue / 2
}
get {
return x * 2
}
}
您可以在setter/getter中修改其他属性,这就是它们的用途。
您可以使用属性观察器自定义设置值。为此,请使用“didSet”而不是“set”。
class Point {
var x: Int {
didSet {
x = x * 2
}
}
...
至于格特...
class Point {
var doubleX: Int {
get {
return x / 2
}
}
...
Setters和Getters适用于< code > computed properties ;这种属性在实例中没有存储空间getter的值是从其他实例属性中计算出来的。在您的情况下,没有要分配的< code>x。
显式:“没有显式支持ivars我怎么能做到这一点”。你不能-你需要一些东西来备份计算的属性。试试这个:
class Point {
private var _x: Int = 0 // _x -> backingX
var x: Int {
set { _x = 2 * newValue }
get { return _x / 2 }
}
}
具体而言,在Swift REPL中:
15> var pt = Point()
pt: Point = {
_x = 0
}
16> pt.x = 10
17> pt
$R3: Point = {
_x = 20
}
18> pt.x
$R4: Int = 10
主要内容:Jsoup 获取属性 语法,Jsoup 获取属性 说明,Jsoup 获取属性 示例以下示例将展示在将 HTML 字符串解析为 Document 对象后获取 dom 元素属性的方法的使用。 Jsoup 获取属性 语法 document : 文档对象代表 HTML DOM。 Jsoup : 解析给定 HTML 字符串的主类。 html : HTML 字符串。 link : 元素对象表示表示锚标记的 html 节点元素。 link.attr() : attr(attribute) 方
接口说明 获取shp属性 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /wish3dearth/api/material/shp/v1.0.0/getShpAttributeByMaterilId 是否需要登录 否 请求字段说明 参数 类型 请求类型 是否必须 说明 materialId string query 是 素材ID 响
接口说明 获取shp属性 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /wish3dearth/api/material/shp/v1.
问题内容: 这个问题很简单,但是由于我是python的新手,所以我从php过来了,因此遇到了一些错误。 我有以下简单的课程: 在PHP中,我可以执行以下操作: 我该如何在python中做到这一点? 问题答案: 要访问对象的字段或方法,请使用dot : 如果将在运行时定义字段名称,请使用内置函数:
我在做一些类似递归获取属性的事情 代码的问题是:它只下降了一级,我想知道如何使用反射自动获取所有属性?我刚刚编写了以下示例容器代码: 在主要方法中: 我希望得到: 我现在得到的结果是: 有人能帮我使用PrintProperties方法吗?非常感谢你。
考虑以下实体: 的应该被延迟获取。问题是,当使用