我知道可以在swift中将类类型传递给函数:

func setGeneric<T>(type: T.Type){ }
setGeneric(Int.self)

但我们如何从函数返回类型呢?写点什么

func getGeneric<T>() -> T.Type {
   return Int.self
}

给出编译器错误"Int与T不相同".那么,有可能从swift函数返回类型吗?

Edit

class RealmTodo: RLMObject {
   dynamic var title = ""
}

我的包装晚餐课是这样的:

class RealmClassWrapper {
   private let backingModel: RLMObject
   //...
   func backingModelType<T>() -> T.Type{ fatalError("must be implemented") }
}

和实际包装:

class Todo: RealmClassWrapper {
   //some other properties
   func backingModelType<T>() -> T.Type{ return RealmTodo.self }
}

推荐答案

你可以返回任何你想要的类型.

func getTypeOfInt()  -> Int.Type  { return Int.self  }
func getTypeOfBool() -> Bool.Type { return Bool.self }

如果类型不是由参数确定的,或者返回值是常量,则无需引入泛型T类型.

Swift相关问答推荐

如何使用快速宏用来自函数的关联值来初始化枚举?

对多个项目的数组进行排序

map 视图上的SwiftUI渐变折线

传递给SWIFT ResultBuilder的闭包中结果类型的对象

阻塞(受CPU限制的)任务的异步功能?

它是RxSwift中直接用于可扩展视图的有效的可扩展BehaviorRelay值?

我正在try 通过代码设置节中页眉和页脚的高度,但它不起作用

Swift图表';chartXVisibleDomain挂起或崩溃

SwiftData:非法try 在不同上下文中的对象之间建立关系

Swift ui 转换无法按预期工作

如何使用可搜索在搜索栏中搜索包括>或<?

领域异常中的相同方法:发送到实例的无法识别的 Select 器

如何从数据中读取以空结尾的字符串?

XCUITest 在 TearDown 期间随机失败-无法终止 com.bundle.id

NSFontAttributeName 已更改为 String

如何在Swift中找出字母是字母数字还是数字

Swift :如何在一组字符之后得到所有东西

<<错误类型>> 奇怪的错误

Swift UITableView reloadData 在一个闭包中

在情节提要中设置的 UITableViewCell 的恢复 ID 和标识符有什么区别