Swift结构初始化,生成另一个类似结构的字符串

Swift结构初始化,生成另一个类似结构的字符串,swift,xcode,struct,initialization,Swift,Xcode,Struct,Initialization,在Swift上,String是一个结构,您可以使用 var someString:String = "Hello" 如何使另一个结构像字符串一样可初始化 比如说 struct StringV2 { init() } class SomeClass { let someStringV2:StringV2 = "Hello" } 因为这就是String的代码看起来的样子。在我看来,这是该语言整洁的一部分。是的,这是可能的,多亏了协议 不幸的是,它有一些复杂性。继承自,其本身继承

在Swift
上,String
是一个结构,您可以使用

var someString:String = "Hello"
如何使另一个结构像字符串一样可初始化

比如说

struct StringV2 {
    init()
}

class SomeClass {
    let someStringV2:StringV2 = "Hello"
}
因为这就是
String
的代码看起来的样子。

在我看来,这是该语言整洁的一部分。是的,这是可能的,多亏了协议

不幸的是,它有一些复杂性。继承自,其本身继承自。因此,要遵守第一条,您必须遵守上面的其他2条

这使您的结构或类可以从以下位置初始化:

  • A
    UnicodeScalarLiteralType
    (例如A
    UnicodeScalar
    ,它是单个Unicode码点,例如
    “A”

  • 扩展的GraphimeClusterLiteralType
    (例如
    字符
    ,它是
    UnicodeScalar
    的集合,例如
    "我想这可能会对你的Swift 2有所帮助,你会在这里找到一个例子:。我们不知道你的意图是什么,但写一个新的字符串类型是一件非常小的事情,几乎从来没有出现过。很可能你想实现的目标可以更容易,更好,使用扩展来完成。@AlexanderMomchliov是的,我知道扩展,但我知道现在我正在尝试创建一个新的字符串类型。出于学习目的:)我猜您是否给出“a”或“a”,也可以省略所有类型别名并定义
    init(stringLiteral:string)
    等@MartinR哦,是的,它只会推断出相关的类型。很好。@RajanMaheshwari有趣的观察结果。铸造也不能让它工作。这是怎么回事?可能是一个角色,你必须符合
    expressiblebyxtendegraphemclusterliteral