Swift 当编写函数时uv:vs uu字符串:的区别/用例是什么
我正在学习swift,这个符号给我带来了很多麻烦。在苹果书《swift中的应用程序开发》第15课中,我们学习构建结构。我试图理解使用uo:表示一个未命名参数和使用uo:字符串表示某个东西(可能是另一个未命名参数,但我们给它起了个名字?)之间的区别 下面是我的示例代码:Swift 当编写函数时uv:vs uu字符串:的区别/用例是什么,swift,syntax,structure,Swift,Syntax,Structure,我正在学习swift,这个符号给我带来了很多麻烦。在苹果书《swift中的应用程序开发》第15课中,我们学习构建结构。我试图理解使用uo:表示一个未命名参数和使用uo:字符串表示某个东西(可能是另一个未命名参数,但我们给它起了个名字?)之间的区别 下面是我的示例代码: struct Rectangle { let width: Int let height: Int var area: Int { return wi
struct Rectangle {
let width: Int
let height: Int
var area: Int {
return width*height
}
func biggerThan(_ rectangle: Rectangle) -> Bool {
return area > rectangle.area
}
}
与我的主要问题一样,我不明白为什么这个函数在不更改代码返回行的情况下,以
(\u矩形:矩形)
或(\uquot:矩形)
的形式编写。可能是您遇到了Swift版本问题。在Swift 3中,需要两种语法之一:
func foo(bar:String, bar2:Int) {
}
func foo(_ bar:String, bar2:String) {
}
func foo(bar:String, _ bar2:String) {
}
func foo(_ bar:String, _ bar2:Int) {
}
对该函数的相应调用为:
foo(bar: "Hello World", bar2: 1)
foo("Hello World", bar2: 1)
foo(bar: "Hello World", 1)
foo(bar: "Hello World", 1)
也就是说,签名中的下划线表示您没有在调用中声明它
但是在所有以前版本的Swift中,第一个参数有一个隐含的下划线,进行相应的调用:
foo("Hello World", bar2: 1)
foo("Hello World", bar2: 1)
foo("Hello World", 1)
foo("Hello World", 1)
还注意到,尽管可以考虑下划线为<强>显式声明,不使用名称,但也可以< <强>重命名< /强>:
foo(bar myBar:String, bar2 myBar2:Int) {
// internally refer to myBar and myBar2, not bar and bar2
}
电话是:
foo(bar: "Hello World", bar2: 1)
如果您将
(\uRectangle:rectangle)
更改为(\uRectangle)
,您的代码将无法编译,因为您在正文中使用了矩形。哈米什,我也认为不会。xcode操场编译正常。单词矩形从白色变为绿色,但它仍然按预期运行代码。不要在操场上测试-它们超级多车而且不可靠。在一个真实的项目中测试它,你会发现它无法编译。我只是在xcode中运行了它,你是对的!谢谢,我没有意识到这是xcode/PlayGrounds中的一个问题非常感谢dfd,这为我澄清了这个问题