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 中 BoolreturnType

编译器告诉您,您正在调用一个 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()
}

在这种情况下,我不会执行最后一个选项,因为如果您忽略结果,调用它的意义何在?