我无法访问自定义类中的函数;无论我尝试什么,它都会出现错误

时间:2015-04-03 14:57:18

标签: swift

import Cocoa

public class Ut {
    public func foo(m: Int) -> Int {
        return m*m
    }
}

class ViewController: NSViewController {

    let j = 3
    let k = Ut.foo(j) // 'ViewController.Type' does not have a member named 'j'

...

2 个答案:

答案 0 :(得分:2)

不幸的是,在为属性提供初始值时,您无法访问其他属性:

struct S {
    let a = 1
    // error: S.Type does not have a member named a
    let b = a + 1
}

相反,您必须在init

中初始化这些值
struct S {
    let a: Int
    let b: Int

    init() {
        // note, a must be initialized in here
        // too if b relies on it
        a = 1
        b = a + 1
    }
}

(另外,看起来你正在使用Ut.foo作为类级函数,但它是一个成员函数 - 但这个特殊错误是关于属性init的)

答案 1 :(得分:0)

您必须将foo(m: Int)作为类功能才能直接调用。否则,您必须创建一个Ut实例,然后在此实例上调用foo()

class func foo(m: Int) -> Int {
        return m*m
}

然后在其他地方:     设k = Ut.foo(j)

如果您将j作为参数传递,则此调用必须放在函数内,而不是在类级别。如果您想在课程级别调用,请传递值(例如:let k = Ut.foo(5)