KR
Size: a a a
KR
AD
Т8
Т8
trait MyAdd {
fn zero() -> Self;
fn add(self, rhs: Self) -> Self;
}
impl MyAdd for i32 {
fn zero() -> Self { 0 }
fn add(self, rhs: Self) -> Self { self + rhs }
}
fn generic_sum<T: MyAdd>(items: &[T]) {
items.iter().fold(MyAdd::zero(), |x, y| x.add(y));
}
generic_sum(&[1,2,3,4,5]);Т8
public static ValueType UncheckedAddNumbers(this IConvertible numeric1, IConvertible numeric2)
{
bool isNumeric1 = numeric1 switch
{
byte number => true,
sbyte number => true,
Int16 number => true,
UInt16 number => true,
Int32 number => true,
UInt32 number => true,
Int64 number => true,
UInt64 number => true,
double number => true,
float number => true,
_ => false,
};
bool isNumeric2 = numeric2 switch
{
byte number => true,
sbyte number => true,
Int16 number => true,
UInt16 number => true,
Int32 number => true,
UInt32 number => true,
Int64 number => true,
UInt64 number => true,
double number => true,
float number => true,
_ => false,
};
if (!isNumeric1 || !isNumeric2)
{
throw new ArgumentException("Arguments must be a numeric type");
}
dynamic number1 = numeric1;
dynamic number2 = numeric2;
return number1 + number2;
}Т8
Т8
Т8
M
Т8
M
M
Т8
H
M
M
Т8
M
AZ
public static ValueType UncheckedAddNumbers(this IConvertible numeric1, IConvertible numeric2)
{
bool isNumeric1 = numeric1 switch
{
byte number => true,
sbyte number => true,
Int16 number => true,
UInt16 number => true,
Int32 number => true,
UInt32 number => true,
Int64 number => true,
UInt64 number => true,
double number => true,
float number => true,
_ => false,
};
bool isNumeric2 = numeric2 switch
{
byte number => true,
sbyte number => true,
Int16 number => true,
UInt16 number => true,
Int32 number => true,
UInt32 number => true,
Int64 number => true,
UInt64 number => true,
double number => true,
float number => true,
_ => false,
};
if (!isNumeric1 || !isNumeric2)
{
throw new ArgumentException("Arguments must be a numeric type");
}
dynamic number1 = numeric1;
dynamic number2 = numeric2;
return number1 + number2;
}