gpt4 book ai didi

java - 如何在 Java 或 C# 等静态类型语言中避免参数顺序依赖

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:37 25 4
gpt4 key购买 nike

我来自 Python、Ruby 和 PHP 世界,我尝试遵循的技术之一是从我的代码中删除参数顺序依赖项。这是在 Ruby 中实现的此技术的简短演示:

class Gear
attr_reader :chainring, :cog, :wheel
def initialize(args)
@chainring = args[:chainring]
@cog = args[:cog]
@wheel = args[:wheel]
end
...
end

Gear.new(
:chainring => 52,
:cog => 11,
:wheel => Wheel.new(26, 1.5)).gear_inches

如您所见,客户端代码不需要知道初始化 Gear 实例的参数顺序,我喜欢这样。但现在我只是想知道同样的事情是如何在像 Java 这样的静态类型语言中实现的,我也想知道人们是否试图在这种语言中遵循这样的技术。如果有人可以分享他们的经验并展示一些演示代码(让它使用 Java、C# 等),那就太好了。

最佳答案

您不必遵守 C# 中的参数顺序。如果您知道参数名称,您可以利用 named and optional arguments通过使用参数名称、冒号和您的值。

    static void Main(string[] args)
{
var variable1 = "1";
var variable2= 90056;
var variable3 = 'u';

// random order
TestMethod(arg3: variable3, arg1: variable1, arg2: variable2);

// you can even omit some argument
TestMethod(arg2: variable2);
}

private static void TestMethod(string arg1 = null, int arg2 = 0, char arg3 = '\0')
{
Console.WriteLine(arg1);
Console.WriteLine(arg2);
Console.WriteLine(arg3);

Console.ReadKey();
}

我相信 Xiaoy312 的答案就是你要找的,但我会把它留在这里,以防以后有人对此感到好奇。

关于java - 如何在 Java 或 C# 等静态类型语言中避免参数顺序依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37201178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com