Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将结构实例调用到类中?(Swift)_Swift_Class_Struct - Fatal编程技术网

将结构实例调用到类中?(Swift)

将结构实例调用到类中?(Swift),swift,class,struct,Swift,Class,Struct,我想在类中访问结构中的一个实例,这可能吗?结构不在类内 结构: struct A { var x: String = "Text" } 类别: class B{ //is there a way to call var x here? } 你当然可以。但你的目的是什么 结构A{ 变量x:String=Text } B类{ A:A 初始输入:A{ self.structA=输入 } } 设b=b输入:A printb.structA.x 是的,这是可能的……但是。。。B

我想在类中访问结构中的一个实例,这可能吗?结构不在类内

结构:

struct A {
 var x: String = "Text"
}
类别:

class B{
 //is there a way to call var x here?
}

你当然可以。但你的目的是什么

结构A{ 变量x:String=Text } B类{ A:A 初始输入:A{ self.structA=输入 } } 设b=b输入:A printb.structA.x
是的,这是可能的……但是。。。B需要知道A的情况。在这方面,结构与在其他语言中所做的没有什么不同

解决这个问题的一种方法是在B中引用a,就像这样

如果您想进一步证明您编写了一点代码,您可以将对a的引用作为参数传递给B的init,如下所示

这样,您就可以在不同的场景(例如,正常模式和测试)中自由地使用不同的变体。如果你听到人们谈论依赖注入,这基本上就是他们的意思

如果您想隐藏x的实现细节,即它属于A的事实,不让B的消费者知道,您可以将x作为B上的只读变量公开


我希望上面的内容可以让您开始学习:

我只是在一个类中有一个函数,它需要来自存储在结构中的实例的数据才能正常工作。谢谢你的帮助!
class B {
    let a: A = A()

    // now you can get access to x like so: a.x
}

class B {
    let a: A

    init(a: A) {
        self.a = a
    }

    // now you can get access to x like so: a.x
}

class B {
    let a: A

    init(a: A) {
        self.a = a
    }

    var x: String {
        a.x
    }
}