Excel 2015,Access 2015
一般国家:
if s=t then
LD = 0
Exit Function
end if
现状:
If s = t Then: LD = 0: Exit Function
目标: 有没有办法将多个条件语句压缩成一行而不会基本上伪造一个回报?我正在寻找更优雅的解决方案。
灵感:来自https://en.wikipedia.org/wiki/Levenshtein_distance的C代码
for (int j = 0; j < t.Length; j++)
{
var cost = (s[i] == t[j]) ? 0 : 1;
v1[j + 1] = Minimum(v1[j] + 1, v0[j + 1] + 1, v0[j] + cost);
}
在VBA中改为:
For j = 0 To Len(t) - 1
If Mid$(s, i + 1, 1) = Mid$(t, j + 1, 1) Then cost = 0 Else cost = 1
v1(j + 1) = VBAMin(v1(j) + 1, v0(j + 1) + 1, v0(j) + cost)
Next j
答案 0 :(得分:1)
我有时会做类似下面的事情:
(我知道大多数人会认为这是糟糕的编程)
If s = t _
Then LD = 0:Exit Function _
Else If a=b _
Then LD = 1 _
Else If c=d then LD = 2 Else LD = 3:Exit Function
答案 1 :(得分:1)
试试这个
cost = IIf(Mid$(s, I + 1, 1) = Mid$(t, J + 1, 1), 0, 1)