这里的 print() 是做什么的? (打印调用另一个打印函数的函数)
What does the print() here do? (Printing a function that invokes another print func)
我是编程新手,尤其是 Swift 语言。
我正在尝试打印包含打印功能的字符串(我使用字符串插值)。
我不明白为什么我从这段代码中得到了一个奇怪的输出:
func newFunc() {
print("I print a message")
}
print("Function said: \(newFunc())")
我得到以下输出:
I print a message
Function said: ()
函数调用的消息在“函数说:”字样之前执行。
我知道我可以使用函数内部的 return 来获得正确的输出或使用变量来存储此字符串,但我想了解为什么会得到上述结果。
提前致谢!
我认为查看 call stacks 会帮助您更好地理解这个概念。本质上,当您调用 main 方法(单独的 print 语句)时,main() 会被放置在堆栈中。当函数在堆栈上时,直到 运行 完成后才会弹出。由于您对 newFunc() 的调用发生在 main 完成之前,因此 newFunc 然后被放置在调用堆栈中 main 的顶部。 newFunc() 打印、完成并弹出。因此,main 做同样的事情。
如果问题是“为什么输出看起来不像Function said: I print a message
?”,那么简单的解决方案就是将代码更改为以下
func newFunc() {
return "I print a message"
}
print("Function said: \(newFunc())")
在这里您会看到 newFunc() 方法不打印任何内容,而是 returns 向其调用者 main() 打印一个值。
您将 newFunc()
视为 return 有用的结果(您可以将其插入 "Function said: \(here)"
。但它 return 没有任何作用,在 Swift 中相当于 returning Void
.
Void
是一种模拟 return 无的类型。它相当于空元组 ()
。如果函数没有显式声明 return 类型(例如 newFunc()
),那么它的行为 就像 它声明了 return 类型Void
个。任何时候执行一个 void-returning 函数到达它的主体的末尾,就好像末尾有一个隐式的 return
或 return ()
。写得更明确,你的代码表现得像:
func newFunc() -> Void {
print("I print a message")
return ()
}
print("Function said: \(newFunc())")
从这里开始,希望您应该清楚为什么会得到您所看到的结果。
您可能想要做的是 newFunc()
return 一个有用的值,并将其插入到您的字符串中。像这样:
func newFunc() -> String {
return "I print a message" // Actually, no you don't, you return a message.
}
print("Function said: \(nenFunc())")
我是编程新手,尤其是 Swift 语言。 我正在尝试打印包含打印功能的字符串(我使用字符串插值)。
我不明白为什么我从这段代码中得到了一个奇怪的输出:
func newFunc() {
print("I print a message")
}
print("Function said: \(newFunc())")
我得到以下输出:
I print a message
Function said: ()
函数调用的消息在“函数说:”字样之前执行。 我知道我可以使用函数内部的 return 来获得正确的输出或使用变量来存储此字符串,但我想了解为什么会得到上述结果。
提前致谢!
我认为查看 call stacks 会帮助您更好地理解这个概念。本质上,当您调用 main 方法(单独的 print 语句)时,main() 会被放置在堆栈中。当函数在堆栈上时,直到 运行 完成后才会弹出。由于您对 newFunc() 的调用发生在 main 完成之前,因此 newFunc 然后被放置在调用堆栈中 main 的顶部。 newFunc() 打印、完成并弹出。因此,main 做同样的事情。
如果问题是“为什么输出看起来不像Function said: I print a message
?”,那么简单的解决方案就是将代码更改为以下
func newFunc() {
return "I print a message"
}
print("Function said: \(newFunc())")
在这里您会看到 newFunc() 方法不打印任何内容,而是 returns 向其调用者 main() 打印一个值。
您将 newFunc()
视为 return 有用的结果(您可以将其插入 "Function said: \(here)"
。但它 return 没有任何作用,在 Swift 中相当于 returning Void
.
Void
是一种模拟 return 无的类型。它相当于空元组 ()
。如果函数没有显式声明 return 类型(例如 newFunc()
),那么它的行为 就像 它声明了 return 类型Void
个。任何时候执行一个 void-returning 函数到达它的主体的末尾,就好像末尾有一个隐式的 return
或 return ()
。写得更明确,你的代码表现得像:
func newFunc() -> Void {
print("I print a message")
return ()
}
print("Function said: \(newFunc())")
从这里开始,希望您应该清楚为什么会得到您所看到的结果。
您可能想要做的是 newFunc()
return 一个有用的值,并将其插入到您的字符串中。像这样:
func newFunc() -> String {
return "I print a message" // Actually, no you don't, you return a message.
}
print("Function said: \(nenFunc())")