使用Sinatra库,我试图压缩显示HTML代码到一个函数的两个函数。这两个函数只有少量的HTML不同。 下面是一个例子。我可以将HTML放入变量吗?
def make_start_page()
<<EOS
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<p> Hello </p>
<img src="..." />
</body>
</html>
EOS
end
def make_guess_page()
<<EOS
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<p> Something different </p>
<a href="..." >1</a>
</body>
</html>
EOS
end
在Ruby函数将调用这两个函数,我想知道是否有可能采取的HTML不同的小部分,并把它传递给这两个函数,将显示一个单一的,浓缩的版本这一页。
def handle()
if 1
var = "<p> Hello </p>
<img src="..." />"
elsif 2
var = "<p> Something different </p>
<a href="..." >1</a>"
make_start_guess_page(var)
end
所以,它不工作? – 2012-03-19 19:29:08
“干”的概念,即“不要重复自己”,就是你在说的。最好重构成能够理解差异的一段代码,并有条件地将特定上下文中所需的内容替换掉,这样就不会有大量冗余的代码。 – 2012-03-19 20:25:56