如何从函数中获取值

时间:2017-07-08 15:18:56

标签: swift

我有一个函数检查用户输入的值是否为nil(配偶为double)。所有变量都在函数内声明。 现在,我试图从函数中获取var并在我的其他代码中使用它(在函数外部)。我试图用返回选项做它,但它显示我的错误。 我在谷歌寻找它,因为我看到那里我不确定我是否能真正做到这一点。 有没有人知道我该如何解决? 这是我的代码:

func numbers() -> Double  {
print("enter plate heigh")
let num1 = Double(readLine()!)

if checkIfNil(value1: num1){
    print("plaese enter valid heigh")
    numbers()
}
else{
    let x = num1
    print("good! \(num1)")
    return x!
}
return 0.0
}

let platHeigh = numbers()
print("is: \(platHeigh)")

TNX!

2 个答案:

答案 0 :(得分:2)

您发布的代码的主要问题是您没有在sdk函数中使用调用numbers()的结果。强制解包nil值也会导致崩溃。

注意:请勿在操场上运行此操作。仅在命令行应用程序中使用它。

它应该是(暂时忽略强制解缠问题):

numbers

但递归并不是一个很好的解决方案。使用简单的循环。

func numbers() -> Double  {
    print("enter plate heigh")
    let num1 = Double(readLine()!)

    if checkIfNil(value1: num1){
        print("plaese enter valid heigh")
        return numbers() // you need to return here
    }
    else{
        let x = num1
        print("good! \(num1)")
        return x!
    }
}

答案 1 :(得分:-1)

在这一行:

let num1 = Double(readLine()!)
如果readLine()返回nil,则会出现崩溃。因为您使用!强制展开它。

更好的方法是使用if let statement

var input: Double? = nil

func numbers() -> Double? {
    if let num1 = input {
        print("good! \(num1)")
        return num1
    } else {
        print("plaese enter valid heigh")
        return nil
    }
}

在此功能中,num1仅为您的字段指定值(如果不是nil )。然后它返回。

否则会打印错误消息并返回nil。在您的功能之外,您现在知道,没有输入任何内容。