制作警卫声明Swift时出错

问题描述 投票:2回答:1

请考虑以下事项:

let isHaveSn = model.positions.contains {$0.assortment?.isSerialTrackable == true}
guard isHaveSn else {
return
}

isHaveSn产品Bool,所以我检查Bool在后卫,一切正常。但我希望简化这样:

 guard model.positions.contains {$0.assortment?.isSerialTrackable == true} else {

                return
            }

它会产生几个错误,其中一些错误:预期表达式或连续语句应该分开;

但我只是复制右侧:

let isHaveSn = model.positions.contains {$0.assortment?.isSerialTrackable == true}

为什么我的代码无法编译?

ios swift
1个回答
3
投票

正确的语法是:

guard model.positions.contains(where: {$0.assortment?.isSerialTrackable == true}) else {
    return
}

实际上,在swift-evolution中有一个提议,允许在被拒绝的保护语句中进行尾随闭包。你可以阅读more about it here

© www.soinside.com 2019 - 2024. All rights reserved.