Swift - 访问结构体 [英] Swift - accessing structs

查看:181
本文介绍了Swift - 访问结构体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有一个如下定义的结构:

If I have a struct defined like this:

struct Cat {
    static let Siamese = "Siamese"
    static let Tabby = "Tabby"
    static let Fluffy = "Fluffy"

    static func cat () -> [String] {
        return [Siamese, Tabby, Fluffy]
    }
}

为什么我无法访问它?

var cat:Cat = Cat.Siamese //"NSString" is not a subtype of Cat


推荐答案

您正在尝试将一个String赋给一个定义为 Cat 的变量。这就是为什么你得到一个错误。

You are trying to assign a String to a variable defined as a Cat. That is why you are getting an error.

您的 Cat struct中的所有静态成员都是字符串,而不是 Cat s。

All of your static members in your Cat struct are strings, not Cats.

此外,你的结构没有任何实际的成员。我想你打算有一个名字属性:

Also, your struct doesn't have any actual members. I think you are intending to have a name property:

struct Cat {
    let name: String

    static let Siamese = Cat(name: "Siamese")
    static let Tabby = Cat(name: "Tabby")
    static let Fluffy = Cat(name: "Fluffy")
}

var cat : Cat = Cat.Siamese

您可以更好地使用枚举:

You may be better served with an enum:

enum Cat : String {
    case Siamese = "Siamese"
    case Tabby = "Tabby"
    case Fluffy = "Fluffy"
}

var cat: Cat = .Tabby
println(cat.toRaw()) // "Tabby"

这篇关于Swift - 访问结构体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆