gpt4 book ai didi

java - 重构一系列模式匹配

转载 作者:行者123 更新时间:2023-11-30 07:33:43 25 4
gpt4 key购买 nike

我有以下代码(为示例缩短):

while (reader.ready()) {
String line = reader.readLine();

Matcher responseCodeMatcher = responseCodePattern.matcher(line);
if (responseCodeMatcher.matches()) {
responseCode = Integer.parseInt(responseCodeMatcher.group(1));
continue;
}

Matcher cacheControlMatcher = cacheControlPattern.matcher(line);
if (cacheControlMatcher.matches()) {
cacheControl = CacheControl.parseString(responseCodeMatcher.group(1));
continue;
}

...

}

模式都是类的静态最终成员。所以我有一堆模式,我想找出每一行是否与其中一个匹配,如果匹配 - 做一些事情(从一个模式到另一个模式)。你能想出一种方法来以某种方式很好地重构它吗?可能是我检查过的模式集合(然后如果它匹配我怎么知道该怎么做?)或其他一些想法。

最佳答案

因为到目前为止还没有人回答,我会的,虽然我不会Java。
在 C# 中,我会创建一个元组列表。元组的第 1 项是要检查的模式,第 2 项是匿名方法,其中包含要执行的模式特定代码。在 C# 中,它看起来像这样:

var patterns = new List<Tuple<Pattern, Action<Matcher>>>();
patterns.Add(Tuple.Create(responseCodePattern, matcher =>
{
responseCode = Integer.parseInt(matcher.group(1));
}));

patterns.Add(Tuple.Create(cacheControlPattern, matcher =>
{
cacheControl = CacheControl.parseString(matcher.group(1));
}));

while (reader.ready()) {
String line = reader.readLine();
foreach(var tuple in patterns)
{
Matcher matcher = tuple.Item1.matcher(line);
if(matcher.matches())
{
tuple.Item2(matcher);
break;
}
}
}

我不知道,这对 Java 人来说是否有意义,尤其是对于 lambda 语法...请问,如果不是:-)

关于java - 重构一系列模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5677573/

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