是否有任何晶体编码样式可防止编译时出现零错误

时间:2019-07-01 08:21:32

标签: crystal-reports amber-framework

我是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或 好的做法?

1 个答案:

答案 0 :(得分:0)

我也是Crystal的新手,您可以使用guard子句删除嵌套的if块。

return unless doc

此外,您可以为花岗岩设置默认值。因此,如果默认值为空字符串,则可以删除放置title = ""的位置。考虑到这一点,您的新代码将是:

doc = Document.first("where id = ?",params[:id])
return unless doc
title = doc.title