小编bub*_*les的帖子

元素包含不起作用(Angular 2+、RxJS)

这是我的代码。https://stackblitz.com/edit/angular-tq2vaa

constructor(private host: ElementRef) {
}

get element() {
    return this.host.nativeElement;
}

private editModeHandler() {
     const clickOutside$ = fromEvent(document, 'click').pipe(
        filter(({ target }) => {
        console.log('parent', this.element, 'child', target)

          const ans = this.element.contains(target) === false
          console.log(ans)
          return  ans
        }),
        take(1)
     )
}
Run Code Online (Sandbox Code Playgroud)

这是它在控制台中打印的内容。正如你所看到的,app-editable-component 包含 h3,它是目标,但为什么 ans 是 true???

续

dom rxjs typescript angular

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

Java Streams:替换分组并按toMap减少

我大约提高了一些代码,以前也问了一个问题在这里@霍尔格给了我正确的回答,他说:

每当您发现将归类收集器与groupingBy一起使用时,应检查toMap是否更合适

好像是花样!他建议我做的事很完美。

这是众所周知的模式吗?为什么toMap比(在某些情况下)结合groupingBy和更好reducing

java java-stream

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

Java:参数遍历?

我有这个代码:

public class Compiler {

    public void compile(String template, Object o, Object params) {
         //...
        context(o, params);
         //...
    }

    private void context(Object o, Object params) {
         //...
         substitue(o, params);
         //...
    }

    private void substitue(Object o, Object params) {
         //...
         print(params);
         //...
    }

    private void print(Object params) {//use parameter params here, only here 
         //...
         System.out.println(params);
         //...
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,该参数params仅在方法中使用print,而不是在compile,context或 中使用substitue。问题是将 添加params到所有方法的签名中,直至print

一般来说,当我遇到这个问题时,我会重构我的代码,如下所示:

public class Compiler {


    public …
Run Code Online (Sandbox Code Playgroud)

java refactoring

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

如何简化在多个字段上创建null安全比较器?

我有一个简单的比较器,它通过日期和时间字段比较Action对象:

static final Comparator<Action> COMPARATOR = comparing(Action::date, 
nullsLast(naturalOrder())).thenComparing(Action::time, 
nullsLast(naturalOrder()));
Run Code Online (Sandbox Code Playgroud)

结果示例如下所示:

{hour: 01/01/2019, time: 15:55}
{hour: 01/01/2019, time: null}
{hour: 03/01/2019, time: 11:11}
{hour: 08/01/2019, time: 11:11}
{hour: 08/01/2019, time: null}
{hour: null, time: null}
{hour: null, time: null}
Run Code Online (Sandbox Code Playgroud)

比较器需要再包含三个字段。nullsLast(naturalOrder())每次重复都让我无休止。

在不使用第三方库的情况下,如何简化比较器的使用?

java comparator java-8

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

RxJs 弹珠测试:断言失败日志难以理解

我有这个 Rxjs 测试代码。它故意失败,因为我想向您展示失败的日志。我发现这很难理解,或者至少我不能流利地阅读它。

有人可以解释我什么意思:$[i].frame = i' to equals i''

import { delay } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';

describe('Rxjs Testing', () => {

  let s: TestScheduler;

  beforeEach(() => {
    s = new TestScheduler((actual, expected) => {
      expect(actual).toEqual(expected);
    });
  });

  it('should not work', () => {
    s.run(m => {
      const source = s.createColdObservable('-x-y-z|');
      const expected = '-x-y-z|'; // correct expected value is '---x-y-z|'

      const destination = source.pipe(delay(2));
      m.expectObservable(destination).toBe(expected);
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

testing rxjs rxjs6 rxjs-marbles

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

无法打开生成的 zip 文件

我已经按照几篇文章使用 java 类创建 zip 文件ZipOutputStream。zip 已创建,但我无法打开它。在我的 Mac 上,当我使用以下命令打开它时,我收到此消息unzip

未找到中央目录结尾签名。该文件要么不是 zip 文件,要么构成多部分存档的一张磁盘。在后一种情况下,中央目录和 zip 文件注释将在此存档的最后一个磁盘上找到。

unzip: 在 /Users/xxxx/Downloads/iad.zip 或 /Users/xxxx/Downloads/iad.zip.zip 之一中找不到 zipfile 目录
,并且找不到 /Users/xxxx/Downloads/iad.zip.ZIP,期间。

我的java课程:

import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import static java.util.Arrays.stream;

@Slf4j
@UtilityClass
public class ZipCreator {

    public byte[] compressAll(String... files) throws IOException {

        try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
             ZipOutputStream zipOut = new ZipOutputStream(baos)) {

            stream(files)
                    .forEach(file -> addToZip(zipOut, file));

            return …
Run Code Online (Sandbox Code Playgroud)

java zip

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