我无法想象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
。
答案 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)
编译器告诉您正在调用一个返回值的函数,但您没有使用该值。这可能是开发人员方面的错误,因此编译器会显示警告消息。