代码返回“表达式类型不明确,没有更多上下文”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 值传递给采用 Doubles 的函数。

将您的签名更改为:

func returnRightTemp(input: Int, output: Int, value: String) -> Double 

【讨论】:

为什么要将函数变成闭包?您将失去使用命名参数的能力。 这个答案有帮助吗?如果是这样,请通过单击左侧的灰色复选标记将其变为绿色来接受它。如果没有,请发表评论。

以上是关于代码返回“表达式类型不明确,没有更多上下文”Swift的主要内容,如果未能解决你的问题,请参考以下文章

测试在抛出的 func 上返回“表达式类型不明确,没有更多上下文”

Swiftui 错误:表达式类型不明确,没有更多上下文

Swift 错误:表达式类型不明确,没有更多上下文

表达式类型不明确,没有更多上下文错误 SwiftUI

表达式类型不明确,没有更多上下文 Healthkit ios Swift

表达式类型不明确,没有更多上下文 Healthkit ios Swift