将Swift转换为F# - 选项和类型转换

时间:2017-12-26 15:09:57

标签: ios swift f# optional

我尝试将以下Swift代码转换为F#

if let type : String = UserDefaults.standard.object(forKey: "type") as? String {
    if (type == "this") {

    } else if (type == "that") {

    }
}

我想出了这个,但是我不确定如何将值转换为String并将其存储在变量中,因为所有这些代码都会检查该值是否为空。

if NSUserDefaults.StandardUserDefaults.ValueForKey(new NSString("type")) <> null then printf("fofo")

1 个答案:

答案 0 :(得分:1)

在F#中,您可以使用:>运算符(如果转换为向上转换)或:?>运算符(如果转换为向下转换)进行转换。它看起来像这样:

let objObject= "test" :> obj
let strObject = objObject:?> string;;

val objObject: obj = "test"
val strObject : string = "test"

转换您的使用默认值看起来像这样:

let strValue = NSUserDefaults.StandardUserDefaults.ValueForKey(new NSString("type")) :?> string

如果你想检查多种类型,那么你可能想要使用这样的模式匹配:

let strObject = match objObject with
                | :? string as strObject -> strObject
                | :? System.Int32 as intObject -> ""