从Swift 3.0中的函数返回一个布尔值

时间:2016-11-16 01:10:19

标签: swift boolean func

我无法想象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) ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

虽然之前的问题主要集中在NSLayoutConstraints(即Result of call to [myFunction] is unused)与Objective-C的比较,但目前的问题更为狭窄,因为它专注于{{1}的函数调用。在Swift 3.0中returnType

2 个答案:

答案 0 :(得分:1)

你没有对结果做任何事情。

您可以指定结果:

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()
}

在这种情况下,我不会做最后一个选项,因为如果你忽略了结果,那么调用它有什么意义呢?

答案 1 :(得分:0)

编译器告诉您正在调用一个返回值的函数,但您没有使用该值。这可能是开发人员方面的错误,因此编译器会显示警告消息。