У меня есть следующий код C #, он проверяет разрешения. Мне интересно, будут ли вычислительные выражения при преобразовании в f # способом исключить проверки на null.
bool ShouldGrantPermission(ISecurityService security, User user, Item item) {
return user != null && item != null && user.Id == item.AuthorId
&& security.Does(user).Have(MyPermission).On(item);
}
Я хотел бы отметить, что API ISecurityService в настоящее время возвращает false, если какой-либо из элементов имеет значение null. Однако он выполняет вызов базы данных, поэтому код здесь проверяет значение null, а затем выполняет проверку идентификатора, потому что в большинстве случаев это возвращает false и избегает вызова базы данных.