小编Tho*_*zat的帖子

在Symfony 2.1语义配置中允许数组(具有默认值)或null

我需要在bundle的语义配置中定义一个具有给定默认值的数组节点.目前看起来像:

$node->arrayNode('foo')
         ->prototype('scalar')->end()
         ->defaultValue(array('1', '2', '3'))
     ->end();
Run Code Online (Sandbox Code Playgroud)

我想给用户提供覆盖此数组的选项,null如:

my_bundle:
  foo: ~
Run Code Online (Sandbox Code Playgroud)

我不能使用空数组([]array())而不是null给定[]应该具有不同语义的数组null.

这是可能的还是有任何非丑陋的解决方法?目前我只是得到一个例外:

InvalidTypeException:路径"my_bundle.foo"的类型无效.预期的数组,但得到NULL

arrays symfony symfony-2.1

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

你如何清理Redux的状态?

作为一个Redux初学者,考虑到(一个更大的应用程序)的想法,我想象一个类似于以下的根减速器:

const rootReducer = combineReducers({ accounting, crm, sales })
Run Code Online (Sandbox Code Playgroud)

在这种情况下,应用程序状态将包含accounting,crm和sales,即使用户仅使用应用程序的一部分.这可能是有利的,例如在会计和CRM之间来回切换时作为缓存,但您可能不希望保留所有已打开的视图的所有数据,即没有任何修剪的完整可能的状态树,在应用程序中永远或甚至在加载时将整个树初始化为其初始状态.

是否有解决这个问题的习语,模式或图书馆,或者我遗失了什么?

作为解决保留所有数据的部分解决方案,我想象一些事情,比如在导航离开应用程序的某些部分时将状态的一部分重置为其初始状态,给出一些声明性规则,例如:

  • 在接收时设置accounting = {}(间接地,通过诸如的动作ACCOUNTING_LEAVING)<Accounting/>componentWillUnmount
  • 收到crm.mail = {}时删除/设置<MailEditor/>componentWillUnmount

我没有看到以任何方式清理国家的例子.许多"list + detail view"示例存储状态{ list: [...], detail: {...} },但是当切换到详细视图时,列表既不清空也不清空或删除.我很快就会回到列表视图,但是在没有释放数据的情况下使用应用程序9到5时就不行了.

state reducers reactjs redux

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

为什么x86-64上的GCC在函数内部插入NOP?

给定以下C函数:

void go(char *data) {
    char name[64];
    strcpy(name, data);
}
Run Code Online (Sandbox Code Playgroud)

x86-64上的GCC 5和6编译(简单gcc -c -g -o后跟objdump)到:

0000000000000000 <go>:
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   48 83 ec 50             sub    $0x50,%rsp
   8:   48 89 7d b8             mov    %rdi,-0x48(%rbp)
   c:   48 8b 55 b8             mov    -0x48(%rbp),%rdx
  10:   48 8d 45 c0             lea    -0x40(%rbp),%rax
  14:   48 89 d6                mov    %rdx,%rsi
  17:   48 89 c7                mov    %rax,%rdi
  1a:   e8 00 00 00 00          callq  1f <go+0x1f> …
Run Code Online (Sandbox Code Playgroud)

assembly gcc x86-64 nop

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

QueryOver如何用于过滤特定的类?

我目前正在动态构建这样的查询:

QueryOver<Base, Base> q = QueryOver.Of<Base>();

if (foo != null) q = q.Where(b => b.Foo == foo);
// ...
Run Code Online (Sandbox Code Playgroud)

现在有多个Base(例如Derived)我想要过滤的映射子类,基本上类似于:

if (bar) q = q.Where(b => b is Derived); // does not work
Run Code Online (Sandbox Code Playgroud)

要么:

if (bar) q = q.Where(b => b.DiscriminatorColumn == 'derived'); // dito
Run Code Online (Sandbox Code Playgroud)

我如何以类型安全的方式最好地 - 但不是必须 - 实现这一目标?这可以用LINQ完成吗?

linq nhibernate nhibernate-criteria queryover

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