有什么方法可以将值存储为struct?

时间:2018-06-02 19:50:44

标签: swift

我一直在想,是否可以将值存储为结构本身。

请考虑以下代码:

struct Carplate {
   var value: String

   init (_ carplate: String) {
       value = carplate
   }

   //some other functions
}

要访问该值,您需要执行以下操作:

let carplate = Carplate("ABC 1234")
print(carplate.value)

而不是:

print (carplate)

有没有办法让我设计我的结构来实现这一点,也许像是来自python的 repr

我看到标准库中的结构能够做到这一点

let string = String("ABCDEF")
print (string)

对他们来说这是一种特殊的能力吗?

编辑:

如果我愿意这样做:

 struct Carplates {
       var value: [String]

   init (_ carplates: [String]) {
       value = carplates
   }

   //some other functions
}

并在另一个函数中使用它:

let carplates = Carplates(["ABC 1234", "ABE 5678"])
if (carplates.value.count > 5) {
   // some functions
}

我有什么方法可以做到这一点吗?:

if (carplates.count > 5) {
   // some functions
}

2 个答案:

答案 0 :(得分:1)

您可以尝试遵守CustomStringConvertible协议并在description

中写回复
struct Carplate : CustomStringConvertible
{
    var description: String
    {
       return value 
    }


  var value:String

    init(_ carplate:String) {

        self.value = carplate 

    }

}

答案 1 :(得分:1)

采用CustomStringConvertible。

   struct Carplate : CustomStringConvertible {
        var description: String { return value }
        var value: String
        init (_ carplate: String) {
            value = carplate
        }
    }
    let carplate = Carplate("ABC 1234")
    print(carplate) // ABC 1234