为什么Swift Playground中print语句输出额外的空括号
异常输出原因
你遇到的输出问题是Swift的函数返回值特性导致的,核心原因如下:
- 你定义的
test、old、feed等所有Pets类的实例方法,都没有显式声明返回值类型,Swift中无显式返回值的函数默认返回Void类型,该类型本质就是空元组()。 - 你在调用上述方法时额外嵌套了一层
print()语句:执行print(pet.test())时,会先运行pet.test()方法内部的print("hi")输出hi,随后pet.test()执行完毕返回空元组(),外层的print就会把这个返回值()单独打印一行,这就是你看到的每行正常输出后都跟一行()的原因。 - 输出末尾额外出现的
(Function)和cat has bathed.是Swift Playground的实时预览求值特性产生的调试附加内容,不属于你编写代码的标准执行输出。
修复方案
如果要消除多余的空元组输出,你可以二选一修改代码:
- 直接调用实例方法,不需要外层套
print,修改后调用代码如下:
pet.test() pet.old() pet.feed() pet.clean() pet.play() pet.sleep()
- 调整方法实现,将需要输出的内容作为返回值返回,不要在方法内部执行
print,示例如下:
func test() -> String { return "hi" } // 后续调用print(pet.test())就只会输出hi,不会出现多余()
内容的提问来源于stack exchange,提问作者Zame Bow
相关产品推荐
相关产品推荐

