這是半個問題和半個有趣的測驗,因爲正則表達式會是可笑地複雜並難以創建。如果我自己做(,因爲我實際上需要使用它),我會寫一個文件解析器而不是正則表達式,儘管我知道在這種情況下可以使用正則表達式,並且我認爲也許是一些喜歡挑戰的StackOverflow編碼人員。這個替換正確的正則表達式是什麼?
作爲「獎勵」,我會將問題保留7天,此時150聲譽的賞金將歸於具有正確答案的人。我知道回答者的聲譽可能大於3K,但代表聲望仍然很高。 :)
正則表達式將不得不轉向:
[DllImport(EngineDll)]
public static extern int Graphics(int width, int height, int depth = default(int), int hertz = 60, int flags = (int)(GraphicsBufferType.Back | GraphicsBufferType.Depth));
分爲:
public static int Graphics(int width, int height, int depth = default(int), int hertz = 60, int flags = (int)(GraphicsBufferType.Back | GraphicsBufferType.Depth))
{
if (Engine.ThreadSafe)
{
lock (typeof(Dll))
{
return Dll.Graphics(width, height, depth, hertz, flags);
}
}
else
{
return Dll.Graphics(width, height, depth, hertz, flags);
}
}
由於多完全不需要,你可以擁有這一切在1號線,如果你發現它更容易解析:
public static int Graphics(int width, int height, int depth = default(int), int hertz = 60, int flags = (int)(GraphicsBufferType.Back | GraphicsBufferType.Depth)) { if (Engine.ThreadSafe) { lock (typeof(Dll)) { return Dll.Graphics(width, height, depth, hertz, flags); } } else { return Dll.Graphics(width, height, depth, hertz, flags); } }
現在,如果它不夠明顯,什麼變量是返回類型,方法名稱,參數類型,參數名稱,參數是否具有默認值,在這種情況下是缺省值。該函數可能是一個void,在這種情況下,不應該有return語句。
根據要求:第二輸入 - 輸出:
[DllImport(EngineDll)]
public static extern void EndRender();
輸出:
public static void EndRender()
{
if (Engine.ThreadSafe)
{
lock (typeof(Dll))
{
Dll.EndRender();
}
}
else
{
Dll.EndRender();
}
}
再次,1-襯墊接受。
祝你好運! :)
請注意所有可能會說我只是懶惰的人:改變問題。
我添加了`fun`和`code-bowling`標籤,因爲如你所說這是一項挑戰,並不是真正適合這項工作的工具。但它看起來有趣......哦,爲了清楚起見,你想要取代什麼?轉型的規則是什麼?你只是期望參數名稱添加到回調? – ircmaxell 2011-01-20 03:24:33
@ircmaxell:我不明白你的問題,對不起。謹慎闡述? – Lazlo 2011-01-20 03:28:16
所以你想要的基礎知識是從源移動到目的地的類名,輸入參數列表已移動,並且附加到兩個返回的參數名稱正確? – ircmaxell 2011-01-20 03:30:15