我是Crystal和Amber框架的新手,当我尝试用db将Amber重写为Rails应用程序时,遇到了很多编译错误,抱怨nil匹配,甚至有时候我认为这显然不是nil。
doc = Document.first("where id = ?",params[:id])
if doc.title.nil?
title = ""
else
title = doc.title
end
我必须这样写
doc = Document.first("where id = ?",params[:id])
title = ""
if doc
if doc.title.nil?
title = ""
else
title = doc.title.not_nil!
end
end
我认为可能是因为我的代码风格。
那么对于crystal或 好的做法?
答案 0 :(得分:0)
我也是Crystal的新手,您可以使用guard子句删除嵌套的if块。
return unless doc
此外,您可以为花岗岩设置默认值。因此,如果默认值为空字符串,则可以删除放置title = ""
的位置。考虑到这一点,您的新代码将是:
doc = Document.first("where id = ?",params[:id])
return unless doc
title = doc.title