热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Swift初始化器中参数名称使用"with"的规范与最佳实践分析

在Swift中,初始化器的参数名称使用"with"前缀是一种常见的规范,但需要注意的是,对于第一个参数,编译器默认会省略外部参数名。因此,直接在第一个参数前使用"with"会导致编译错误。本文深入探讨了这一规范的最佳实践,并提供了避免此类错误的具体方法,帮助开发者更好地理解和应用Swift的初始化器设计原则。

This initialiser will cause an error complaining that "with" is implied for the first parameter of an initialiser; did you mean name?

此初始化程序将导致错误,抱怨初始化程序的第一个参数隐含“with”;你是说名字吗?

init(withName: String){

}

I'm not sure what this means, if it provides automagically the withName external parameter name if I call it name or what...

我不确定这意味着什么,如果我自动提供withName外部参数名称,如果我称之为名称或什么...

If I change it to

如果我改成它

init(name: String){

}

any attempt at calling it init(with: "joe") or init(withName: "Joe") will fail. So I have no idea what the error message is telling me and how I can declare it so I call it init(withName: "joe").

任何调用init(使用:“joe”)或init(withName:“Joe”)的尝试都将失败。所以我不知道错误消息告诉我什么以及我如何声明它所以我称之为init(withName:“joe”)。

1 个解决方案

#1


13  

In Swift you should not add with to the initializer. The initializer should be init(name:) and you should call it as Object(name: "joe").

在Swift中,您不应该添加到初始化程序。初始化程序应该是init(name :),你应该将它称为Object(名称:“joe”)。

This is because of how Swift methods bridge to ObjC. In ObjC, that initializer will automatically be translated to initWithName:. If you named it init(withName:) it would become initWithWithName:.

这是因为Swift方法如何桥接到ObjC。在ObjC中,该初始化程序将自动转换为initWithName:。如果你将它命名为init(withName :),它将成为initWithWithName:。


推荐阅读
author-avatar
何泳辰_439
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有