代码返回“表达式类型不明确,没有更多上下文”Swift
Posted
技术标签:
【中文标题】代码返回“表达式类型不明确,没有更多上下文”Swift【英文标题】:Code returning "Type of expression is ambiguous without more context" Swift 【发布时间】:2020-09-24 02:02:13 【问题描述】:import SwiftUI
struct ContentView: View
@State private var initialValue = ""
@State private var typeOfTemp = 0
@State private var conversion = 0
let types = ["Celsius", "Fahrenheit", "Kelvin"]
func returnRightTemp(input:Double, output:Double, value:String) -> Double
var newValue = Double(value) ?? 0
switch input
case 0:
break
case 1:
newValue = (newValue - 32) * 0.5556
case 2:
newValue = newValue - 257.15
default:
print("Please pick from 0-2")
switch output
case 0:
break
case 1:
newValue = ((newValue/5) * 9) + 32
case 3:
newValue = newValue + 273.15
default:
print("Please pick from 0-2")
return newValue
var body: some View
NavigationView
Form
Section
TextField("Enter value you wish to convert", text: $initialValue)
.keyboardType(.numberPad)
Section(header: Text("Input Temp"))
Picker("Initial Temp", selection: $typeOfTemp)
ForEach(0..<types.count)
Text("\(types[$0])")
.pickerStyle(SegmentedPickerStyle())
Section(header: Text("Output Temp"))
Picker("Initial Temp", selection: $conversion)
ForEach(0..<types.count)
Text("\(types[$0])")
.pickerStyle(SegmentedPickerStyle())
Section
Text("\(returnRightTemp(input: self.typeOfTemp, output: self.conversion, value: self.initialValue))"
)
struct ContentView_Previews: PreviewProvider
static var previews: some View
ContentView()
当我调用 returnRightTemp 函数时,它会弹出一个错误提示“表达式类型不明确,没有更多上下文”。我以前从未见过这种类型的错误,也找不到任何资源来帮助我。任何可以帮助的事情将不胜感激。再一次感谢你。我想知道的另一件事是,您如何将函数更改为闭包?我确实尝试过实现它,但我可能搞砸了。
【问题讨论】:
【参考方案1】:您正在尝试将 Int
值传递给采用 Double
s 的函数。
将您的签名更改为:
func returnRightTemp(input: Int, output: Int, value: String) -> Double
【讨论】:
为什么要将函数变成闭包?您将失去使用命名参数的能力。 这个答案有帮助吗?如果是这样,请通过单击左侧的灰色复选标记将其变为绿色来接受它。如果没有,请发表评论。以上是关于代码返回“表达式类型不明确,没有更多上下文”Swift的主要内容,如果未能解决你的问题,请参考以下文章
测试在抛出的 func 上返回“表达式类型不明确,没有更多上下文”