this code是NBuilder的一部分。我有一个糟糕的一天..为了证明这一点,我不明白这个(简单)代码试图做什么。
以下是答案,后面是代码。
GetRandom.Phrase(5) == null or et or ut or do or elit or amet..
(nothing over 4 characters)
GetRandom.Phrase(4) == null or sit or sed or do ..
(nothing over 3 characters)
GetRandom.Phrase(3) == null or et or ut or do (nothing over 2 characters)
GetRandom.Phrase(2) == null
GetRandom.Phrase(1) == null
和代码......
private static readonly string[] latinWords = { "lorem", "ipsum", "dolor",
"sit", "amet", "consectetur", "adipisicing", "elit", "sed", "do",
"eiusmod", "tempor", "incididunt", "ut", "labore", "et", "dolore",
"magna", "aliqua" };
public virtual string Phrase(int length)
{
var count = latinWords.Length;
var result = string.Empty;
var done = false;
while (!done)
{
var word = latinWords[Next(0, count - 1)];
if (result.Length + word.Length + 1 > length)
{
done = true;
}
else
{
result += word + " ";
}
}
return result.Trim();
}
我原以为该方法应该返回x个短语或至少指定长度的随机短语?
答案 0 :(得分:3)
代码返回一个随机短语小于或等于指定的长度,以字符为单位。关键是这一行:
if (result.Length + word.Length + 1 > length)
这可以保证结果的字符长度(包括新添加的单词)不超过length
的值。