You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中实现符合要求的eight、minus、plus等计算函数?

实现链式数字计算逻辑的解决方案

问题分析

现有代码的参数设计不符合目标调用逻辑:调用minus(three())时,操作函数需要先接收右侧数值,返回一个能接收左侧数值的计算委托;而数字函数需要支持两种调用方式——无参时返回自身数值,有参时将自身数值传入操作委托完成计算。

完整实现步骤

1. 修正操作函数(Plus/Minus)

调整函数签名,让它们接收右侧数值,返回一个接收左侧数值并输出计算结果的委托:

private static Func<int, int> Minus(int right)
    => left => left - right;

private static Func<int, int> Plus(int right)
    => left => left + right;

2. 实现数字函数(以three、eight为例)

为每个数字实现重载函数,覆盖无参返回自身、有参执行计算两种场景:

// 数字3的实现
private static int Three() => 3;
private static int Three(Func<int, int> operation) => operation(3);

// 数字8的实现
private static int Eight() => 8;
private static int Eight(Func<int, int> operation) => operation(8);

3. 验证调用逻辑

此时调用目标代码即可得到预期结果:

// 返回5
var result1 = Eight(Minus(Three()));
// 返回11
var result2 = Eight(Plus(Three()));

扩展说明

如果需要支持更多数字(如one、two等),只需按照相同的重载模式实现对应函数;若要新增乘、除等操作,同理实现接收右侧数值并返回计算委托的函数即可。

内容的提问来源于stack exchange,提问作者Penance

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:01:40