小编pro*_*cer的帖子

数组赋值与循环分配

在一个类中,我有一个私有数组

private boolean[][][] array;
Run Code Online (Sandbox Code Playgroud)

后来被宣布为

array = new boolean[2][100][100]; //*
Run Code Online (Sandbox Code Playgroud)

在某一点上,我想用第一维的第二个数组覆盖第一维中的第一个数组.我认为这应该工作

array[0] = array[1];
Run Code Online (Sandbox Code Playgroud)

但这产生了错误的行为.我试过这个简单的for循环:

for (int column = 0; column < array[0].length; column++) {
    for (int row = 0; row < array[0][0].length; row++) {
        array[0][column][row] = array[1][column][row];
    }
}
Run Code Online (Sandbox Code Playgroud)

它按预期工作.

为什么第一段代码不起作用?

*第一个维度在2处是静态的,但另一个维度实际上来自另一个阵列.我删除它们是为了清楚.

java arrays variable-assignment multidimensional-array

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

与同步调用结合使用时,等待语句的顺序在Python中是否重要?

将等待的操作移动到方法的顶部以便能够在等待时进行工作是否有意义?

按逻辑顺序

async def set_new_password(user_id, new_password):
    hash = bcrypt(new_password)
    db_handle = await async_get_db_handle()
    await async_write_password(db_handle, user_id, hash)
Run Code Online (Sandbox Code Playgroud)

这里afaiu Python将计算哈希值,然后为db句柄创建协同程序,然后为写入操作创建协同程序,然后控制将调度两个操作的事件循环.

在这种情况下,假设这是我们唯一的方法调用,我们"浪费"时间哈希密码,以下将更快.

尽可能晚地同步

async def set_new_password(user_id, new_password):
    db_handle = await async_get_db_handle()
    hash = bcrypt(new_password)
    await async_write_password(dh_handle, user_id, hash)
Run Code Online (Sandbox Code Playgroud)

在等待db_handle时,密码将被哈希处理,因此我们将使用"停机时间"来做一些有用的事情.

那么我是否应该尽可能地尽可能晚地提出不可饶恕的陈述,以便在等待期待的陈述时执行它们?

python async-await

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

设计模式以切换一组功能的状态

我在类中有一系列实例函数.还有一个布尔实例变量,用于指定对象状态.几乎所有实例函数都依赖于此布尔状态.他们的身体看起来像

int f() {

   if (state) {
      //do stuff
   }
   else {
      // do other stuff
   }
}
Run Code Online (Sandbox Code Playgroud)

除此之外,某些功能由州交换.因此,如果state为true,那么当用户调用f()时,它实际上就会运行.但是当状态为假时,当用户调用f()时会发生反义()运行.

所以一些函数在它们内部有开关,一些函数完全交换.

如果我用C++做这个,我可能会使用函数指针.我如何用Java做到这一点?策略模式?

java design-patterns

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

为什么和类型称为和类型?

在学习 Haskell 的过程中,我阅读了关于代数数据类型、求和类型和乘积类型的内容。虽然乘积类型类似于笛卡尔积并且“乘积”对我来说立即有意义,但我不明白为什么和类型(又名变体类型,又名标记联合,又名歧视联合,又名不相交联合)被称为类型。

维基百科说:

sum 类型对应于 Curry-Howard 对应关系下的直觉逻辑析取。

好的,我明白了:析取类似于布尔代数中的 OR,这种看起来像总和,因为

 OR |   | +
-----------
0 0 | 0 | 0 
0 1 | 1 | 1
1 0 | 1 | 1
1 1 | 1 | 0 (mismatch here)
Run Code Online (Sandbox Code Playgroud)

但由于 1 + 1,它并不真正适合。

我找到了关于什么是乘积和总和类型的各种解释,我想我明白了。总和类型是一件事另一件事。

但是为什么它被称为和类型呢?仅仅因为将符号 + 用于 OR 运算符是一种约定?还是因为“和类型是乘积类型的对偶。”?

(同样,除非我错过了一些大的东西,请不要解释 sum/product type。我想我明白了这个概念。我只想知道为什么它被称为sum type。)

algebraic-data-types discriminated-union

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

如何将自己的类注入ASP.NET MVC Core中的控制器?

我创建了自己的用户管理类来调用UserManager.我希望控制器能够访问UserManager对象以登录或注册用户.

我知道我必须在控制器类中提供一个参数化构造函数,它接受一个对象UserManager并将其赋值给私有属性等.

但是我在哪里以及如何在我的项目中注册我的类,以便它将由ASP.NET MVC Core框架自动注入?

c# dependency-injection asp.net-core-mvc asp.net-core-1.1

-7
推荐指数
1
解决办法
1716
查看次数