当前位置: 首页 > 面试题库 >

找不到接受提供的参数的'/'的重载

麹高义
2023-03-14
问题内容
// Playground - noun: a place where people can play


func getAverage(numbers: Int...) -> Double{
    var total = 0
    var average:Double = 0

    for number in numbers{
        total = total + number
    }

    average = total / numbers.count

    return average
}

getAverage(3, 6)

我收到一个错误 average = total / numbers.count

找不到接受提供的参数的’/’的重载

我试图通过做修复:

average = Double(total/numbers.count)

但随后将getAverage设置为4而不是4.5


问题答案:

在Swift中没有这样的隐式转换,因此您必须自己明确地进行转换:

average = Double(total) / Double(numbers.count)

来自 Swift编程语言 :“永远不会将值隐式转换为其他类型。” (部分:快速浏览)

但是您现在使用的是Swift,而不是Objective-C,因此请尝试以更加面向功能的方式进行思考。您的函数可以这样写:

func getAverage(numbers: Int...) -> Double {
    let total = numbers.reduce(0, combine: {$0 + $1})
    return Double(total) / Double(numbers.count)
}

reduce将第一个参数作为累加器变量的初始值,然后将该combine函数应用于累加器变量和数组中的每个元素。在这里,我们传递一个匿名函数,该函数使用$0$1表示传递的第一个和第二个参数并将它们加起来。

更简洁地说,您可以这样编写:numbers.reduce(0, +)

请注意,类型推断如何仍然可以很好地找出那total是一个Int



 类似资料:
  • 问题内容: 我已经转换一个到一个通过使用。然后,我尝试将其乘以0.01,但是出现一个错误,提示这是我的代码: 通过阅读其他文章,似乎答案与类型有关。例如,如果将类型设置为Integer,则它将收到类似的错误。我尝试将类型更改为Int,但这似乎无法解决问题。 我也曾尝试设置“海峡”和“pennyCount”作为类型和和的所有组合,和。我的猜测是问题与函数将a转换为an有关。 有人可以帮忙弄清楚问题可

  • 问题内容: 我得到错误: 我也尝试过 和 但 工作良好。正确的语法是什么? 问题答案: 有一个功能:

  • 我用了这个代码 我得到的错误是“找不到接受所提供参数的”init“的重载”

  • 我为“MainWindow.fxml”文件构建了一个相当简单的控制器来处理按钮。我遵循了本教程。我已经在fxml文档中正确设置了fx:id。然而,在编译时,我得到以下错误警告 java: typejava.beans.EventHandler不接受参数 对于生产线 我的完整控制器类如下所示... 感谢任何帮助,提前感谢。

  • 函数GetLatestFullAssemblyName{param([string]$DllName) } $assemblysn=(GetLatestFullAssemblyName-DllName“Microsoft.WindowsAzure.Storage.DLL”).FullName 函数Get-AzureStorageTableTable{<#.synopsis获取一个表对象,它可以来自

  • 我和这里的用户遇到了同样的问题:log4j类型genericopobjectpool不接受参数,但我一直无法找到这个问题的答案。Log4j2在附加到rollingfile时起作用,但此处列出的方法:https://logging.apache.org/log4j/2.x/manual/appenders.html显示错误“GenericObjectPool不接受参数”