
上QQ阅读APP看书,第一时间看更新
2.7.1 必填值的验证
先来讨论一个最基本,也是最简单的验证,即必填值非空(non-null)的验证。
例如商品,在创建伊始,一定要有两个必填字段,就是id和name,而price等字段由于商品可能还没有上架,暂时没有值可以填进去,可以说这个字段为空(null)。那么如何定义非空类型呢?其实很简单,只要在非空字段的原类型后面加一个感叹号!就可以标注这个字段是非空的。这个限制对输入和输出同样有效。
在后面的章节中,把String!称作String的非空类型。例如:

动动脑:字符串列表的非空是写成[String!],[String]!还是[String!]!呢?
一起来思考一下列表的非空情况。例如商品可以有多个名字,对于像这样的字符串列表(数组),如果写成name:[String!],这个写法代表列表中的每一个String元素都不能为空,但列表本身可以为空。如果写成name:[String]!,则代表列表本身不能为空,但是其中元素可以为空。
如表2-1列出了各种列表非空类型对于不同值的验证结果。例如对于数据[null, 'abc']这样的字符串列表就不能通过[String!]的验证,因为非空作用于列表中的每一个元素,列表中的第一个元素null不能通过验证。
表2-1 列表非空验证结果对照表
