Ruby on rails 在Ruby中,在GraphQL类型的字段定义中使用感叹号的目的是什么?

Ruby on rails 在Ruby中,在GraphQL类型的字段定义中使用感叹号的目的是什么?,ruby-on-rails,ruby,graphql,Ruby On Rails,Ruby,Graphql,下面我将学习使用Ruby后端的GraphQL,在“查询返回链接”一节中,有以下代码: # defines a new GraphQL type Types::LinkType = GraphQL::ObjectType.define do # this type is named `Link` name 'Link' # it has the following fields field :id, !types.ID field :url, !types.String

下面我将学习使用Ruby后端的GraphQL,在“查询返回链接”一节中,有以下代码:

# defines a new GraphQL type
Types::LinkType = GraphQL::ObjectType.define do
  # this type is named `Link`
  name 'Link'

  # it has the following fields
  field :id, !types.ID
  field :url, !types.String
  field :description, !types.String
end
我知道感叹号只是一个“not”运算符,但有人能在这里解释它的用途吗?

它是一个必填字段(不可为空)。执行:

绳子!表示该字段不可为空,这意味着GraphQL服务承诺在查询该字段时始终为您提供一个值。在类型语言中,我们将用感叹号表示这些类型

它似乎被关键字语法所取代:

field :handle, String, null: false

图形QL中的“!”标记指定字段不可为空。在您的示例中,id、url和description字段都不能为NULL

field :id, !types.ID
field :url, !types.String
field :description, !types.String
如果在列表中使用,则其含义略有不同

[Int]!:列表不能为空。如果传递“null”,则将是一个错误,而“[1,2,null]”是可接受的。
[Int!]:列表的内容不能为空。它将接受“null”列表,但“[1,2,null]”将导致错误

感叹号是在类型之前还是之后,这不重要吗?阅读本文档时,所有非空值后面都跟在它后面,而不是前面:-而在中,它用于处理类型,但没有解释…?在Ruby graphql DSL中,它在类型前面,因为它使用了重载运算符-
!(types.String)
。它被映射到
types.String。它
types.String,它将被视为类型名称的一部分:
String太好了,谢谢!在您的帮助下,我发现哪些状态表明它现在已被删除,以避免与内置逻辑运算符的歧义。当然可以!:)