std::optional<T>::and_then
来自cppreference.com
template< class F > constexpr auto and_then( F&& f ) &; |
(1) | (C++23 起) |
template< class F > constexpr auto and_then( F&& f ) const&; |
(2) | (C++23 起) |
template< class F > constexpr auto and_then( F&& f ) &&; |
(3) | (C++23 起) |
template< class F > constexpr auto and_then( F&& f ) const&&; |
(4) | (C++23 起) |
若所含值存在则返回在其上调用 f
的结果。否则,返回返回类型的空值。
返回类型(见后述)必须为 std::optional 的特化。否则程序非良构。
1) 等价于
if (*this)
if (*this)
return std::invoke(std::forward<F>(f), this->value());
else
2) 等价于
if (*this)
if (*this)
return std::invoke(std::forward<F>(f), this->value());
else
3) 等价于
if (*this)
if (*this)
return std::invoke(std::forward<F>(f), std::move(this->value()));
else
4) 等价于
if (*this)
if (*this)
return std::invoke(std::forward<F>(f), std::move(this->value()));
else
参数
f | - | 适合的函数或可调用 (Callable) 对象,返回 std::optional |
返回值
f
的结果或空的 std::optional ,如上所述。
注解
有些语言称此操作为 flatmap
。
示例
本节未完成 原因:暂无示例 |
参阅
若所含值可用则返回它,否则返回另一个值 (公开成员函数) | |
(C++23) |
若所含值存在则返回含有变换后的所含值的 optional ,否则返回空的 optional (公开成员函数) |
(C++23) |
若 optional 含值则返回其自身,否则返回给定函数的结果 (公开成员函数) |