从同一个类

时间:2015-06-15 03:27:48

标签: swift class struct

我想在逻辑上组织类属性,以表示它们是一个逻辑单元,并将它们与其他不太相关的类属性区分开来。

我想过用我班上的结构做这件事。但是,我似乎无法从struct属性setter调用类方法。我得到了一个似乎不合适的编译错误:“在调用中缺少参数#1的参数”

这似乎与calling method from struct in swift不同 函数在struct中。在我的例子中,方法是通用的,不仅适用于我的结构,而是适用于所有类属性。因此,我不想在结构中移动它们。

您是否有关于如何在类中将属性组织成紧密(呃)逻辑单元的想法?

class MyClass {
    struct MyStruct {
        static var aVarInMyStruct: String? {
            didSet {
                anotherVarInMyStruct = foo()        // This gives compile error "missing argument for parameter #1 in call"
            }
        }
        static var anotherVarInMyStruct: String?
    }

    func foo() {
        println("I am foo()")
    }
}

2 个答案:

答案 0 :(得分:4)

内部类型MyStruct对其外部类型MyClass一无所知。因此,foo无法调用MyStruct函数。为了更好地整理代码,建议您使用// MARK: - whatever this section is条评论。类型不在此处组织代码。类型在这里为程序创建正确的抽象。

答案 1 :(得分:1)

我修复了你的错误:

     class MyClass {
    struct MyStruct {
        static var aVarInMyStruct: String? {
            didSet {
                anotherVarInMyStruct = MyClass.foo()        // This gives compile error "missing argument for parameter #1 in call"
            }
        }
        static var anotherVarInMyStruct: String?
    }

    static  func foo()->String {
        println("I am foo()")
        return "it is ok"
    }
}