我有问题。来自 ruby 我习惯了可以执行以下操作的语法。
client = NewsAPI::Client.new(
url: 'https://www.newshost.com/api/',
http_token: '1234567890',
)
newsEntry = client.news.new(
title: 'Some title',
text: 'Some text',
);
newsEntry.save
或者
news = client.news.all
这会给我一份所有可用新闻的列表。
我尝试使用 Swift 类和实例方法构建类似的东西。它适用于实例方法,但我不知道如何实现/访问类功能。像“列表”或“搜索”。 我创建了一个在 XCode Playground 中运行的小示例。
所以基本上我有一个客户端类,它应该为我提供几个“对象”。在本例中是一个新闻“对象”。这个对象应该为我提供类似于上面的 ruby 代码的东西。请参阅下面的代码。
我的问题: 我) 我可以简单地将这些函数添加到我的基类并在我的子类中覆盖它们。这会给我同样的行为。即使我混淆了类和实例方法。 (我猜)从“最佳实践/设计”的角度来看,这样可以吗?
二) 有没有更干净/更好的方法来实现我想要的“Swift 方式”?
非常感谢 约翰内斯
class Client{
let token: String
public init(token: String) {
self.token = token
}
public var newsObject: News {
return News()
}
}
class Ressource {
class func list() {
print("this is a news list")
}
class func search() {
print("this is a news search result")
}
func start() {
print("Hello")
}
}
class News: Ressource{
override func start() {
print("Hello from Sub Class")
}
}
let news = Client(token: "123456").newsObject
news.start()
最佳答案
您只需要使用类类型本身来访问类方法。您不能通过实例访问它们,因为类方法的全部意义在于它们不与类型的实例相关联。
您可以像这样访问列表/搜索类方法:
News.list()
News.search()
关于ruby - Swift 实例 vs 类方法加上类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47478308/