如何play.api.libs.Reads
为People
案例类创建一个?
scala> type Id = Long
defined type alias Id
scala> case class People(names: Set[Id])
defined class People
scala> implicit val PeopleReads: Reads[People] = (
| (__ \ "names").read[Set[Id]])(People)
<console>:21: error: overloaded method value read with alternatives:
(t: Set[Id])play.api.libs.json.Reads[Set[Id]] <and>
(implicit r: play.api.libs.json.Reads[Set[Id]])play.api.libs.json.Reads[Set[Id]]
cannot be applied to (People.type)
(__ \ "names").read[Set[Id]])(People)
该(...)(People)
语法是为您使用构造参数列表(嗯,从技术上讲,它是一个Builder
,而不是列表)而设计的,and
并希望将People
构造函数提升到应用函子中,Reads
以便可以将其应用于这些参数。
例如,如果您的People
类型如下所示:
case class People(names: Set[Id], home: String)
您可以这样写:
implicit val PeopleReads: Reads[People] = (
(__ \ "names").read[Set[Id]] and
(__ \ "home").read[String]
)(People)
但是,在您的情况下,for的构造函数People
只有一个参数,并且您没有使用过and
,所以您没有a Builder[Reads[Set[Id] ~ String]
,您只是拥有一个普通的old Reads[Set[Id]]
。
很好,因为它意味着您不需要怪异的应用函子语法,而您所需要的只是map
:
implicit val PeopleReads = (__ \ "names").read[Set[Id]].map(People)
这样就完成了。
问题内容: 我遇到了这个JSON代码。我注意到它利用了价值。在哪里可以找到有关此值类型的更多信息? 问题答案: *即使在javascript中有效, *undefined 也不是有效的json值。根据官方json标准 (ECMA-404,第5节): JSON值可以是对象,数组,数字,字符串,true,false或null。 对于json,请使用 null 而不是 undefined :
Rust 自定义数据类型主要是通过下面这两个关键字来创建: struct: 定义一个结构体 enum: 定义一个枚举类型 而常量的创建可以通过 const 和 static 关键字来创建。
存在多种方法来重新定义现有类型的行为以及提供新的类型。 重写类型编译 一个常见的需求是强制更改类型的“字符串”版本,即在create table语句或其他SQL函数(如cast)中呈现的版本。例如,应用程序可能希望强制呈现 BINARY 适用于除一个平台外的所有平台 BLOB 待渲染。在本例中,使用现有的泛型类型 LargeBinary ,是大多数用例的首选。但是为了更准确地控制类型,每个方言的编
1. 包含头文件 #import <AdHubSDK/AdHubSDK.h> 2. AdHubCustomView 的创建和初始化 在需要导入广告的ViewController头文件中导入头文件并声明实例以及声明代理 #import <AdHubSDK/AdHubSDK.h> @interface AdHubCustomViewController ()<AdHubCustomViewDele
正如代码所示,我想知道的是,在内存分配中,隐藏Base而不调用子的额外方法的实际情况是什么,它被调用了什么,有没有一种通过Base调用方法的方法。请帮忙
注:内容翻译自官网文档 Language Guide (proto3) 中的 Defining A Message Type 一节 首先我们来看一个非常简单的例子. 让我们假设你想定义一个搜索请求消息格式, 每个搜索请求有一个查询字符串, 搜索结果的第几页/每页结果数量. 这里是你用来定义消息类型的.proto文件: syntax = "proto3"; message SearchReques