假设我有一个将某些输入转换为某些输出的函数:
<?php if ( is_single() && ! empty( $category_array ) && !in_array(2, $category_array ) ) : ?>
除了MyFunction之外,我还有几个非常相似的功能,它们都具有以下模式:
TypeB MyFunction(TypeA input);
唯一的区别是MyFunction。 X和Z并不是真正的函数,它们是返回匿名类型的LINQ语句,因此我认为我可以使用int Example1(...)
{
TypeA a = X();
TypeB b = MyFunction(a);
int z = Z(x, y);
return z;
}
作为参数来创建一个函数:
MyFunction
因此,现在只有一个地方可以使用序列A-MyFunction-C。如果将来A更改为其他内容,Example2的所有用户将自动拥有此新A。
用法(为简单起见:typeA和typeB为int)
int Example2(Func<TypeA, TypeB> MyFunction)
{
TypeA a = X();
TypeB b = MyFunction(a);
int z = Z(x, y);
return z;
}
这很好。但是现在我有一个MyFunction是异步的版本
int B1 (int a) {...}
int B2 (int a) {...}
int i = Example2(B1);
int j = Example2(B2);
是否可以为B1Async创建委托,所以我仍然可以使用Example1,
Task<int> B1Async(int a) {...}
还是我必须创建一个异步版本