我有以下代码
if somecondition then
myobj.Property1 = match myobj.Property1 with
| null -> SomePropertyType ()
| p -> p
Run Code Online (Sandbox Code Playgroud)
我想要做的是查看myobj.Property1是否为null,如果不是,则单独留下它,否则创建SomePropertyType类型的新对象并分配它.
问题是,我得到了
This expression should have type 'unit', but has type 'bool'
Run Code Online (Sandbox Code Playgroud)
我应该怎么做如果我不得不把那些myobj.Property1 ....的多个声明放在那下面if?
Gus*_*Gus 10
您正在比较两个值(使用=),因此返回类型将是bool,但如果您没有其他编译器期望unit的返回类型.
我猜你打算将值赋给属性,<-改为使用:
if somecondition then
myobj.Property1 <- match myobj.Property1 with ...
Run Code Online (Sandbox Code Playgroud)
无论如何,如果你想检查null分配一个你不需要的默认值match,if then就足够了:
if somecondition then
if (myobj.Property1 = null) then myobj.Property1 <- SomePropertyType ()
...
Run Code Online (Sandbox Code Playgroud)
UPDATE
你可以"合并"两if.. then到一个单一的match:
match (somecondition, myobj.Property1) with
| true, null -> myobj.Property1 <- SomePropertyType ()
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
644 次 |
| 最近记录: |