小编Nie*_*iek的帖子

我可以输入部分记录吗?

我有一个Person带有名称和 ID的记录,以及一个createPerson返回Personwithout的函数,将id生成 UUID 留给调用者。:

-- Person.hs
import Data.UUID (UUID)

data Person = Person { name :: String, id :: UUID }

createPerson name = Person { name = name }
Run Code Online (Sandbox Code Playgroud)

有没有办法在Person没有id,的情况下输入 a来通知调用者id Person将抛出异常?我考虑过定义 aPartialPerson如下:

data PartialPerson = { name :: String }
Run Code Online (Sandbox Code Playgroud)

但是当我想添加或更改字段时,这很快就会变得很麻烦。

haskell types record

11
推荐指数
2
解决办法
423
查看次数

更新数据库失败:“索引'IX_Task_UserId'取决于列'UserId'”

[required]注释添加到3个模型上的2个属性并运行后add-migration,运行时出现以下错误update-database

ALTER TABLE ALTER COLUMN UserId failed because one or more objects access this column. The index 'IX_Task_UserId' is dependent on column 'UserId'.

我的up()迁移如下所示:

protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropForeignKey(
            name: "FK_TaskList_AspNetUsers_UserId",
            table: "TaskList");

        migrationBuilder.DropForeignKey(
            name: "FK_Template_AspNetUsers_UserId",
            table: "Template");

        migrationBuilder.DropForeignKey(
            name: "FK_Task_AspNetUsers_UserId",
            table: "Task");

        migrationBuilder.AlterColumn<string>(
            name: "UserId",
            table: "Task",
            nullable: false);

        migrationBuilder.AlterColumn<string>(
            name: "TaskName",
            table: "Task",
            nullable: false);

        migrationBuilder.AlterColumn<string>(
            name: "UserId",
            table: "Template",
            nullable: false);

        migrationBuilder.AlterColumn<string>(
            name: "TemplateName",
            table: "Template",
            nullable: false);

        migrationBuilder.AlterColumn<string>( …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc entity-framework entity-framework-core asp.net-core

4
推荐指数
1
解决办法
1184
查看次数

RxJS 中的 Promise 'finally' 回调等效项

我有一个从 API 获取一些数据的组件。该组件有一个loading成员变量,用于确定是否应显示加载图标。当数据获取完成时,loading设置为 false,以隐藏加载图标。无论是否发生错误,都应该发生这种情况。

目前,我已实现如下:

export class MyComponent implements OnInit {

  loading = true;
  data;

  constructor(private dataService: DataService) { }

  ngOnInit() {
    this.dataService.getData().subscribe(data => {
      this.data = data;
      this.loading = false;
    },
    () => {
      this.loading = false;
    });
  }

}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法消除重复this.loading = false。如果我使用Promises,这就是我使用Promise.finally()回调的目的——但我没有。RxJS 中是否有等效的方法,或者更好的方法来实现这一点?

javascript rxjs typescript angular

4
推荐指数
1
解决办法
1284
查看次数

非返回异步方法

我使用 Typescript 和 es2017 作为编译目标,使用 Javascript 的新async/ await

我目前有以下代码来从 TS 服务类(简化)中获取一些数据:

class MyClass {

    public static async initialize(): Promise<void> {
        const data = await this.getItems();
        // do unrelated initialization stuff
        return new Promise<void>(() => {});
    }

    private static async getItems(): Promise<Item[]> {
        return await Service.fetchData();
    }
}

class Service {
    public static async fetchData(): Promise<Item[]> {
        // Performs an XHR and returns a Promise.
    }
}
Run Code Online (Sandbox Code Playgroud)

此作品,但它是有很多清洁,如果MyClass::initialize()不返回任何东西,而不是返回new Promise<void>(() => {});然而,这似乎是不可能的,因为任何方法/函数使用await 具有被标记 …

javascript asynchronous async-await typescript

3
推荐指数
1
解决办法
2687
查看次数

如何将一系列单子操作应用于 Haskell 中的同一参数?

在Haskell中,有没有办法简化以下代码以消除“hello world”的重复?换句话说,将fgh应用于hello world?

fn = do
  a <- f "hello world"
  b <- g "hello world"
  c <- h "hello world"
  return (a, b, c)
Run Code Online (Sandbox Code Playgroud)

monads haskell

1
推荐指数
1
解决办法
70
查看次数