小编War*_*ens的帖子

通过可观察对象过滤可观察对象

让我们考虑以下简化情况:

  • 我们有一个Observable <Apple>类型的Observable苹果。
  • 每个Apple对象都有一个isRotten()方法,该方法返回一个Observable <Boolean>类型的observable类型,该方法可保证发出至少一个布尔值。

我要过滤可观察的苹果,以使烂苹果不通过过滤器。更准确地说,当且仅当A.isRotten()发出的第一项为false时,苹果A才会通过过滤器。实施此过滤器的最佳方法是什么?

经过一番思考,我可以想到:

apples
    .concatMap(apple => 
        apple.isRotten()
            .first()
            .filter(bool => bool)
            .map(bool => apple))
Run Code Online (Sandbox Code Playgroud)

用JavaScript编写的。(... => ...是一个函数)。这行得通,但是我认为这是冗长且难以理解的。有没有更好的方法来做这种事情?

rxjs reactivex

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

角度 2 中组件中的表行

我想在 Angular 2 中制作一个 TableRowsComponent 来呈现多个表行。

我想在这样的模板中使用它:

<table class>
    <tbody>
        <table-rows *ngFor="#item of list" [someInput]="item"></table-rows>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

(因此“table-rows”将是此处 TableRowsComponent 的选择器)TableRowsComponent 的模板将类似于:

<tr>
    <td> foo </td> 
    <td> bar </td>
</tr>
<tr *ngIf="something">
    ....
</tr>
<tr *ngFor="..">
     ...
</tr>
Run Code Online (Sandbox Code Playgroud)

如果我们这样做,那么结果如下所示:

<table class>
        <tbody>
            <table-rows>
                <tr>
                    ...
                </tr> 
                <tr>
                    ...
                </tr> 
            </table-rows>
            <table-rows>
                <tr>
                    ...
                </tr> 
                <tr>
                    ...
                </tr> 
            </table-rows> 
        </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

不幸的是, < table-rows > 元素搞乱了表格的渲染。如何解决这个问题呢?有没有办法让 angular2 不渲染 < table-rows > 元素?

angular2-template angular

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

选择性地使用AVX2指令对列表中的元素进行排序

我想用AVX2指令加快以下操作,但我无法找到一种方法.

我得到了uint64_t data[100000]一大堆uint64_t和一个unsigned char indices[100000]字节数组.我想输出一个数组uint64_t Out[256],其中第i个值是所有data[j]这样的xor index[j]=i.

我想要的直接实现是这样的:

uint64_t Out[256] = {0};     // initialize output array
for (i = 0; i < 100000 ; i++) {
    Out[Indices[i]] ^= data[i];
}
Run Code Online (Sandbox Code Playgroud)

我们可以使用AVX2指令更有效地实现这一点吗?

编辑:这是我的代码现在的样子

uint64_t Out[256][4] = {0};   // initialize output array
for (i = 0; i < 100000 ; i+=4) {
    Out[Indices[i  ]][0] ^= data[i];
    Out[Indices[i+1]][1] ^= data[i+1];
    Out[Indices[i+2]][2] ^= data[i+2];
    Out[Indices[i+3]][3] ^= data[i+3];
}
Run Code Online (Sandbox Code Playgroud)

optimization x86 simd avx avx2

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

Symfony 表单验证错误显示两次

我需要一个简单的用户注册表格。表单验证按预期工作,除了来自回调约束的验证错误由于某种原因显示两次。

我在错误消息中插入了一个随机数,以查看回调是否被调用了一次或两次。2 条错误消息显示相同的随机数,因此回调(可能)只调用一次。

任何帮助是极大的赞赏!

额外问题:“来自回调函数的所有错误都显示在表单中的同一位置(如预期)。是否(容易)指定应显示验证错误的字段?“

表单类型类如下所示:

class RegisterType extends AbstractType{

static private $em;
static private $translator;

public function __construct( EntityManager $em , TranslatorInterface $translator){
    RegisterType::$em = $em;
    RegisterType::$translator = $translator;
}

public function buildForm(FormBuilderInterface $builder , array $options){
    $builder
    ->add('email','email',[
            'attr'=>['placeholder'=>RegisterType::$translator->trans('your.email')],
            'label'=>false ,
            'constraints'=>[new NotBlank() , new Assert\Email()]])
            ->add('password','password',[
                    'attr'=>['placeholder'=>RegisterType::$translator->trans('your.password')],
                    'label'=>false ,
                    'constraints'=>[new NotBlank()]])
                    ->add('confirmPassword','password',[
                            'attr'=>['placeholder'=>RegisterType::$translator->trans('confirm.password')],
                            'label'=>false ,
                            'constraints'=>[new NotBlank()]]);
}

public function getName(){
    return 'register';
}

public function configureOptions( OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
            'constraints' =>array( new Assert\Callback( array('AppBundle\Forms\Type\RegisterType','validateForm' ) …
Run Code Online (Sandbox Code Playgroud)

php forms validation symfony

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