Return 来自 Swift 3.0 中函数的布尔值
Return a boolean value from a function in Swift 3.0
我不知道 Swift 3.0 的新第一个标签提案如何应用于带有 Bool 的 returnTypes:
var firstString = "string"
var secondString = "thing"
func areTheStringsAnagrams(first: String, second: String) -> Bool {
return first.characters.sorted() == second.characters.sorted()
}
areTheStringsAnagrams(first: firstString, second: secondString)
为什么函数调用没有被使用?
错误是:
/swift-execution/Sources/main.swift:11:1: warning: result of call to 'areTheStringsAnagrams(first:second:)' is unused
areTheStringsAnagrams(first: firstString, second: secondString)
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
尽管与 Objective-C 相比,之前的问题侧重于 NSLayoutConstraints
(即 ),但现在的问题范围更窄,因为它只关注函数调用Swift 3.0 中 Bool
的 returnType
。
编译器告诉您,您正在调用一个 returns 值的函数,但您没有使用该值。这可能是开发人员方面的错误,因此编译器会显示一条警告消息。
你没有对结果做任何事情。
您可以分配结果:
let anagrams = areTheStringsAnagrams(first: firstString, second: secondString)
如果您不需要结果,您有两种选择。您可以分配给 _
_ = areTheStringsAnagrams(first: firstString, second: secondString)
或者您可以用 @discardableResult
标记函数
@discardableResult
func areTheStringsAnagrams(first: String, second: String) -> Bool {
return first.characters.sorted() == second.characters.sorted()
}
在这种情况下,我不会执行最后一个选项,因为如果您忽略结果,调用它的意义何在?
我不知道 Swift 3.0 的新第一个标签提案如何应用于带有 Bool 的 returnTypes:
var firstString = "string"
var secondString = "thing"
func areTheStringsAnagrams(first: String, second: String) -> Bool {
return first.characters.sorted() == second.characters.sorted()
}
areTheStringsAnagrams(first: firstString, second: secondString)
为什么函数调用没有被使用?
错误是:
/swift-execution/Sources/main.swift:11:1: warning: result of call to 'areTheStringsAnagrams(first:second:)' is unused
areTheStringsAnagrams(first: firstString, second: secondString)
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
尽管与 Objective-C 相比,之前的问题侧重于 NSLayoutConstraints
(即 Bool
的 returnType
。
编译器告诉您,您正在调用一个 returns 值的函数,但您没有使用该值。这可能是开发人员方面的错误,因此编译器会显示一条警告消息。
你没有对结果做任何事情。
您可以分配结果:
let anagrams = areTheStringsAnagrams(first: firstString, second: secondString)
如果您不需要结果,您有两种选择。您可以分配给 _
_ = areTheStringsAnagrams(first: firstString, second: secondString)
或者您可以用 @discardableResult
@discardableResult
func areTheStringsAnagrams(first: String, second: String) -> Bool {
return first.characters.sorted() == second.characters.sorted()
}
在这种情况下,我不会执行最后一个选项,因为如果您忽略结果,调用它的意义何在?