使用协议以swift语言连接两个类的问题
我使用游乐场,并试图在下面的简单代码中获得消息“show:Hello”。但是,没有显示任何内容,但没有编译器错误。我不知道问题出在哪里使用协议以swift语言连接两个类的问题,swift,swift-playground,Swift,Swift Playground,我使用游乐场,并试图在下面的简单代码中获得消息“show:Hello”。但是,没有显示任何内容,但没有编译器错误。我不知道问题出在哪里 protocol showSome{ func show(str:String) } class client: showSome{ var s: server? init(){ s = server(str: "Hello", delegate: self) } func setup(){ le
protocol showSome{
func show(str:String)
}
class client: showSome{
var s: server?
init(){
s = server(str: "Hello", delegate: self)
}
func setup(){
let server = s!
server.service()
}
func show(str: String) {
println("show: \(str)")
}
}
class server{
let delegate: showSome?
let str: String
init(str: String, delegate: showSome){
self.delegate = delegate
self.str = str
}
func service(){
let d = delegate!
d.show(str)
}
}
var c = client()
c.setup()
游乐场不显示来自
println
的输出。通过查看>助手编辑器菜单打开助手编辑器,您应该会看到它。您的类-“服务器”-与客户端变量具有相同的名称。所以我不确定当你说
s = server(str: "Hello", delegate: self)
我将您的类的名称更改为Server&Client,它可以按预期工作。您的代码适合我。如果您在操场上,必须打开时间线才能看到输出转到
println()
顺便说一句:按照惯例,类名使用的是带有首字母大写的CamelCase。println在操场上什么都不做?时间线打开了吗?是的,什么都没发生。我想也许我需要一个更稳定的版本。是的,我知道这一点,我试图在控制台中查看它,但什么都没有出现。我认为这没关系,但感谢您给出答案。我不知道是谁否决了你的评论,但我投票支持你的参与!变量名不会成为问题,因为在编译过程中,这些变量名会被otter标识符替换。在我所知道的任何语言中,将变量命名为类名都是很好的,但容易混淆。
let server = s!
server.service()