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 - Fatal编程技术网

在创建类名之前,如何在Swift中声明类名?

在创建类名之前,如何在Swift中声明类名?,swift,Swift,这就是我需要的: func mockNetworkClientWithResponse(response: [String: AnyObject], withRequestType type: DBRequestType = .GET) -> DBMockNetworkClient { class DBMockNetworkClient: DBNetworkClient { } } 返回值尚未定义,因此使用未声明类型时出现错误。如何在创建此函数之前声明它?将声明移到函

这就是我需要的:

func mockNetworkClientWithResponse(response: [String: AnyObject], withRequestType type: DBRequestType = .GET) -> DBMockNetworkClient {

    class DBMockNetworkClient: DBNetworkClient {

    }
}

返回值尚未定义,因此使用未声明类型时出现错误。如何在创建此函数之前声明它?

将声明移到函数之外:

class DBMockNetworkClient: DBNetworkClient { ... }

func mockNetworkClientWithResponse(response: [String: AnyObject], withRequestType type: DBRequestType = .GET) -> DBMockNetworkClient {
    // ...
}

如果函数必须返回类型为
DBMockNetworkClient
的值,则类
DBMockNetworkClient
需要在声明函数的范围内可访问,这只能通过在相等或更高的范围内定义来实现。函数的调用者必须能够知道返回的类型,否则函数将不可用。

将声明移到函数之外:

class DBMockNetworkClient: DBNetworkClient { ... }

func mockNetworkClientWithResponse(response: [String: AnyObject], withRequestType type: DBRequestType = .GET) -> DBMockNetworkClient {
    // ...
}

如果函数必须返回类型为
DBMockNetworkClient
的值,则类
DBMockNetworkClient
需要在声明函数的范围内可访问,这只能通过在相等或更高的范围内定义来实现。函数的调用者必须能够知道返回的类型,否则函数将不可用。

将声明移到函数之外:

class DBMockNetworkClient: DBNetworkClient { ... }

func mockNetworkClientWithResponse(response: [String: AnyObject], withRequestType type: DBRequestType = .GET) -> DBMockNetworkClient {
    // ...
}

如果函数必须返回类型为
DBMockNetworkClient
的值,则类
DBMockNetworkClient
需要在声明函数的范围内可访问,这只能通过在相等或更高的范围内定义来实现。函数的调用者必须能够知道返回的类型,否则函数将不可用。

将声明移到函数之外:

class DBMockNetworkClient: DBNetworkClient { ... }

func mockNetworkClientWithResponse(response: [String: AnyObject], withRequestType type: DBRequestType = .GET) -> DBMockNetworkClient {
    // ...
}

如果函数必须返回类型为
DBMockNetworkClient
的值,则类
DBMockNetworkClient
需要在声明函数的范围内可访问,这只能通过在相等或更高的范围内定义来实现。函数的调用者必须能够知道返回的类型,否则函数将无法使用。

我坚信这是不可能的。现在,模糊的强类型语言,即使是使用更高级的类型系统(如Swift或Scala)的语言,也可以知道,也不能推断在函数中定义类型时要返回的类型

你不能用接口解决这个问题吗

类似(伪代码):


当然,接口的定义必须在函数声明之前。

我坚信这是不可能的。现在,模糊的强类型语言,即使是使用更高级的类型系统(如Swift或Scala)的语言,也可以知道,也不能推断在函数中定义类型时要返回的类型

你不能用接口解决这个问题吗

类似(伪代码):


当然,接口的定义必须在函数声明之前。

我坚信这是不可能的。现在,模糊的强类型语言,即使是使用更高级的类型系统(如Swift或Scala)的语言,也可以知道,也不能推断在函数中定义类型时要返回的类型

你不能用接口解决这个问题吗

类似(伪代码):


当然,接口的定义必须在函数声明之前。

我坚信这是不可能的。现在,模糊的强类型语言,即使是使用更高级的类型系统(如Swift或Scala)的语言,也可以知道,也不能推断在函数中定义类型时要返回的类型

你不能用接口解决这个问题吗

类似(伪代码):


当然,接口的定义必须在函数声明之前。

我认为您可以使用
typealias
作为解决方法,因此

typealias DBMockNetworkClient = Any
有了它,编译器将看到您想要返回的类型,但在函数中有将返回的类


但是,在这种情况下,您将无法使用此类的属性,因为声明仅在该函数内。您只能将结果传递到其他地方。

我认为您可以使用
typealias
作为解决方法,因此

typealias DBMockNetworkClient = Any
有了它,编译器将看到您想要返回的类型,但在函数中有将返回的类


但是,在这种情况下,您将无法使用此类的属性,因为声明仅在该函数内。您只能将结果传递到其他地方。

我认为您可以使用
typealias
作为解决方法,因此

typealias DBMockNetworkClient = Any
有了它,编译器将看到您想要返回的类型,但在函数中有将返回的类


但是,在这种情况下,您将无法使用此类的属性,因为声明仅在该函数内。您只能将结果传递到其他地方。

我认为您可以使用
typealias
作为解决方法,因此

typealias DBMockNetworkClient = Any
有了它,编译器将看到您想要返回的类型,但在函数中有将返回的类

但是,在这种情况下,您将无法使用此类的属性,因为声明仅在该函数内。您只能将结果传递到其他地方