我是斯卡拉的初学者.
匿名函数语法对我来说很清楚:
(a: Int) => Int,
没有括号:a: Int => Int- 编译错误.
但有人能解释一下这种语法的目的吗?
{a: Int => Int}
只是另一种形式的匿名函数?
我有案例课
case class User (
id: Option[Long] = None,
username: String,
password: Option[String] = None,
)
Run Code Online (Sandbox Code Playgroud)
这个案例类是json serialiser
object User {
implicit val userWrites: Writes[User] = (
(JsPath \ "id").write[Option[Long]] and
(JsPath \ "username").write[String] and
(JsPath \ "password").write[Option[String]] and
)(unlift(User.unapply))
}
Run Code Online (Sandbox Code Playgroud)
但我不想在api响应中公开密码字段.我怎样才能实现它?
我也使用这个用于Slick在适当的表中读/写数据,我在许多地方,服务层,控制器层使用它,我不想为api响应创建单独的类(没有密码).
CQRS声明:命令不应该查询读取端.
好.我们来看下面的例子:
用户需要与订单行创建订单,每个订单行包含product_id,price,quantity.
它通过订单信息和订单行列表向服务器发送请求.
服务器(命令处理程序)不应该信任客户端,并且需要验证提供的产品(product_ids)是否存在(否则,将会有大量垃圾).
由于不允许命令处理程序查询读取端,因此它应该以某种方式在写入端验证此信息.
我们在写作方面有什么:存储库.就DDD而言,存储库仅与Aggregate Roots一起运行,存储库只能使用GET BY ID和SAVE.
在这种情况下,唯一的选择是逐个加载所有产品聚合(存储库只有GET BY ID方法).
注意:事件源是用作持久性的,因此一次加载多个聚合以避免对存储库的多个请求会产生问题并且效率不高.
这种情况的最佳解决方案是什么?
PS:一个解决方案是重新设计UI(更像是基于任务的UI),例如:用户首先创建订单(使用常规信息),然后逐个添加产品(每个添加单独的http请求),但我仍然需要支持批量操作(以第三方应用程序为例).
在以下列表视图的项目中,文本的长度可以不同(10个或1000个字符),因此我想使每个列表视图项目的高度都适合文本高度。(如CSS高度:自动)。
Component {
id: sysNotificationsDelegate
Rectangle {
anchors.left: parent.left
anchors.right: parent.right
height: childrenRect.height
color: "#eee"
Text {
text: model.body // <-- TEXT SIZE CAN BE DIFFERENT
wrapMode: Text.WordWrap
}
}
}
ListView {
anchors.fill: parent
spacing: 10
model: ListModel {
id: listModel
}
delegate: sysNotificationsDelegate
}
Run Code Online (Sandbox Code Playgroud)
什么是实现这一目标的最佳方法?(考虑到我将有很多这样的元素,并且我已经读过qml中的属性绑定具有一些额外的性能成本)
(Qt 5.10)
我有以下代码:
object Application {
case class User(id: Long, username: String)
case class Request(path: String)
case class WrappedRequest(user: User, request: Request)
def updateUserAction(implicit request: WrappedRequest) = {
updateUser("john@mail.com") // <-- I need request.user to be passed implicitly here
}
def updateUser(email: String)(implicit user: User) = {
println(user.username)
}
def main(args: Array[String]) = {
implicit val request = WrappedRequest(User(1L, "john"), Request("/"))
updateUserAction
}
}
Run Code Online (Sandbox Code Playgroud)
从以上,是有可能通过request.user在updateUserAction方法将UpdateUser两个方法隐含?
假设我们有Spring boot api端点:
调节器
...
public String registerUser(@RequestBody @Valid User user) {
...
}
Run Code Online (Sandbox Code Playgroud)
用户
class User {
@NotNull
private Integer age;
@NotNull
private String name;
...
}
Run Code Online (Sandbox Code Playgroud)
例如,当我发送一个缺少字段的请求时,agespring会回复一条很好的消息,说明age属性路径中缺少param,例如:
{
"timestamp": "2016-12-20T18:44:29.450+0000",
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.web.bind.MethodArgumentNotValidException",
"errors": [
{
"defaultMessage": "may not be nullt",
"objectName": "user",
"field": "age",
...
Run Code Online (Sandbox Code Playgroud)
但是如果我age在请求中提供param作为String:
{
age: "somestring"
}
Run Code Online (Sandbox Code Playgroud)
我得到org.springframework.http.converter.HttpMessageNotReadableException... Could not read document: Can not deserialize value of type java.lang.Integer from String有哪些方法的信息,排除了这个异常(我不想透露). …
我从 JavaFX 开始,但立即注意到标签变得模糊(你看到字母周围的粉红色边缘了吗?)
我尝试更改字体、大小、粗细,但还是一样......
很碍眼,看起来又笨重,有什么办法让它看起来不模糊吗?
我正在使用 OpenFx 13,尝试过以前版本的 JavaFx。
场景.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.StackPane?>
<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.openjfx.FXMLController">
<children>
<Label fx:id="label" text="Label" />
</children>
</StackPane>
Run Code Online (Sandbox Code Playgroud)
FXML控制器
package org.openjfx;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
public class FXMLController {
@FXML
private Label label;
public void initialize() {
String javaVersion = System.getProperty("java.version");
String javafxVersion = System.getProperty("javafx.version");
label.setFont(Font.font("Menlo", FontWeight.BOLD, 20));
label.setText("Hello, JavaFX " + javafxVersion + "\nRunning on Java " + javaVersion …Run Code Online (Sandbox Code Playgroud) 我已经读过从聚合根访问存储库被认为是不好的做法.如果是,请考虑以下示例:
class User {
private String username;
public void changeUsername(String newUsrname) {
// How will I persist username to database if I don't have access to repository from aggregate root?
...
}
}
Run Code Online (Sandbox Code Playgroud)
如果我无法从聚合根访问存储库,我将如何将用户名持久保存到数据库?
我这样看:
class User {
private String username;
private UserRepository userRepository;
public User(UserRepository userRepository) {
this.userRepository = userRepository;
}
public void changeUserName(String newUsername) {
this.username = newUserName;
userRepository.save(this);
}
}
Run Code Online (Sandbox Code Playgroud)
或者我错过了DDD概念中的一些东西?