问题描述
因此,如果您查看“StringBuilder”的任何 Append 方法,返回类型是 StringBuilder
。不是字符串或行数或任何您可能认为直观有用的东西。表面上(我还没有检查过),它与您刚刚调用该方法的 StringBuilder
对象相同。
我实在想不出这样做的原因。有吗?
解决方法
这是所谓的“流畅接口”或“流畅 API”的一种简单形式。 (请参阅This wikipedia article)遵循该模式的 API 允许链接方法,这在开始时可能看起来很奇怪,但可能会使代码更自然地阅读。另一个实现此功能的著名 API 是 linq
,您可以在其中编写类似
myList.Where(x => x.Element1 > 1).OrderBy(x => x.Element2).Select(x => x.Element3);
或者,作为一个非常复杂的 fluent API 示例,来自 Nuke build 的任务描述:
Target CompileForMatlab => _ => _
.Executes(() =>
{
MSBuild(s => s
.SetSolutionFile(Solution)
.SetConfiguration(Configuration)
.AddTargets("Restore,Build,Publish")
.SetProjectFile(Solution.GetProject("ExtendedLogParser"))
.SetOutDir(ArtifactsDirectory / "ExtendedLogParser")
.SetProperty("Platform",Platform)
.AddProperty("SelfContained",true)
.AddProperty("RuntimeIdentifier","win10-x64")
.AddProperty("PublishDir","../ExtendedLogParser")
.DisableNodeReuse());
});