mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 10:34:30 +08:00
- 移除 EnumerableExtensions 扩展类及其 Map、Filter、Reduce 方法 - 从 ControlExtensions 中删除 Match、MatchOrDefault、If、IfElse 等控制流方法 - 重命名 FunctionExtensions 中的 Memoize 为 MemoizeUnbounded 并更新文档注释 - 重命名 FunctionExtensions 中的 Partial 相关方法并调整参数命名 - 在 PipeExtensions 中移除 Pipe、Then、After、Let 等方法,保留 Also 方法 - 删除多个功能性类型扩展文件,包括 Option、Result、NullableExtensions 等 - 移除功能扩展的 README.md 文档文件 - 更新相关命名空间引用和依赖关系 - [release ci]
46 lines
1.8 KiB
C#
46 lines
1.8 KiB
C#
// Copyright (c) 2025 GeWuYou
|
||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
// you may not use this file except in compliance with the License.
|
||
// You may obtain a copy of the License at
|
||
//
|
||
// http://www.apache.org/licenses/LICENSE-2.0
|
||
//
|
||
// Unless required by applicable law or agreed to in writing, software
|
||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
// See the License for the specific language governing permissions and
|
||
// limitations under the License.
|
||
|
||
namespace GFramework.Core.functional.control;
|
||
|
||
/// <summary>
|
||
/// 控制流扩展方法类,提供函数式编程风格的控制结构
|
||
/// </summary>
|
||
public static class ControlExtensions
|
||
{
|
||
/// <summary>
|
||
/// TakeIf:条件返回值或null
|
||
/// </summary>
|
||
/// <typeparam name="TSource">输入值的类型</typeparam>
|
||
/// <param name="value">要进行条件判断的输入值</param>
|
||
/// <param name="predicate">条件判断函数</param>
|
||
/// <returns>条件为真时返回原值,否则返回null</returns>
|
||
public static TSource? TakeIf<TSource>(
|
||
this TSource value,
|
||
Func<TSource, bool> predicate)
|
||
where TSource : class
|
||
=> predicate(value) ? value : null;
|
||
|
||
/// <summary>
|
||
/// TakeUnless:条件相反的TakeIf
|
||
/// </summary>
|
||
/// <typeparam name="TSource">输入值的类型</typeparam>
|
||
/// <param name="value">要进行条件判断的输入值</param>
|
||
/// <param name="predicate">条件判断函数</param>
|
||
/// <returns>条件为假时返回原值,否则返回null</returns>
|
||
public static TSource? TakeUnless<TSource>(
|
||
this TSource value,
|
||
Func<TSource, bool> predicate)
|
||
where TSource : class
|
||
=> !predicate(value) ? value : null;
|
||
} |