小编Zym*_*mus的帖子

我可以将Kotlin中具有默认参数的函数的函数引用作为无参数函数得到吗?

是否可以获取具有默认参数的函数的函数引用,该默认参数指定为无参数调用?

InputStream.buffered()是一种扩展方法,可将a InputStream转换BufferedInputStream为8192字节的缓冲区大小。

public inline fun InputStream.buffered(bufferSize: Int = DEFAULT_BUFFER_SIZE): BufferedInputStream =
    if (this is BufferedInputStream) this else BufferedInputStream(this, bufferSize)

Run Code Online (Sandbox Code Playgroud)

我想有效地使用默认参数引用扩展方法,并将其传递给另一个函数。

fun mvce() {
    val working: (InputStream) -> InputStream = { it.buffered() }

    val doesNotCompile: (InputStream) -> BufferedInputStream = InputStream::buffered
    val alsoDoesNotCompile: (InputStream) -> InputStream = InputStream::buffered
}
Run Code Online (Sandbox Code Playgroud)

doesNotCompilealsoDoesNotCompile产生以下错误

类型不匹配:推断的类型为KFunction2,但应为(InputStream)-> BufferedInputStream

类型不匹配:推断的类型为KFunction2,但应为(InputStream)-> InputStream

我知道错误是因为InputStream.buffered()实际上(InputStream) -> BufferedInputStream不是,而是的快捷方式(InputStream, Int) -> BufferedInputStream,将缓冲区大小作为参数传递给BufferedInputStream构造函数。

动机主要是样式方面的原因,我宁愿使用已经存在的引用,也不愿在最后一刻创建引用。

val ideal: (InputStream) -> BufferedInputStream = InputStream::buffered// …
Run Code Online (Sandbox Code Playgroud)

kotlin function-reference

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

一个表中的两列是否可以具有指向另一表中同一列的外键?

我的数据库中有两个表:Person 和 Pet。

CREATE TABLE Person (
    id INT NOT NULL,
    PRIMARY KEY (id)
)

CREATE TABLE Pet (
    id INT NOT NULL,
    original_owner INT NOT NULL,
    current_owner INT NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (original_owner)
        REFERENCES Person(id),
    FOREIGN KEY (current_owner)
        REFERENCES Person(id)
)
Run Code Online (Sandbox Code Playgroud)

我试图参考每只宠物的前任主人和当前主人。我也尝试过

CREATE TABLE Pet (
    id INT NOT NULL,
    original_owner INT NOT NULL,
    current_owner INT NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (original_owner, current_owner)
        REFERENCES Person(id, id)
)
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE Pet (
    id INT …
Run Code Online (Sandbox Code Playgroud)

mysql sql foreign-keys foreign-key-relationship

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

公式中的幻数

这是一个完善的惯例,应避免使用魔法数字.但复杂的条件公式中的幻数呢?例如:

int result = 0;
if (level <= 50) {
    result = (int) (Math.pow(level, 3) * (100 - level) / 50);
}
else if (level <= 68 && level > 50) {
    result = (int) (Math.pow(level, 3) * (150 - level) / 100);
}
else if (level <= 98 && level > 68) {
    result = (int) (Math.pow(level, 3) * ((1911 - 10 * level) / 3) / 500);
}
else if (level < 100 && level > 98) { …
Run Code Online (Sandbox Code Playgroud)

java

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

在 Eclipse 中将项目转换为 Gradle 后无法运行 JUnit 测试用例

我在 Eclipse 中使用 Maven 来管理我的项目,但认为 Gradle 看起来最终可能会给我带来更多好处。我正在尝试实现 CI/CD 管道,但想要检查某些事情(例如单元测试成功和代码覆盖率)。使用转换我的项目后

gradle eclipse
Run Code Online (Sandbox Code Playgroud)

我发现我无法再通过上下文菜单运行 JUnit 测试用例

Right Click -> Run As... -> JUnit Test
Run Code Online (Sandbox Code Playgroud)

出现以下错误

Class not found <package>.<class>
Run Code Online (Sandbox Code Playgroud)

但当我跑步时

gradle test
Run Code Online (Sandbox Code Playgroud)

它们全部通过,但不要给我任何更多信息(哪些已运行,哪些失败,哪些出错)。

通过切换到 Gradle 项目,现在所有任务都只能在 Gradle 上下文中运行吗?Eclipse 中没有报告任何错误,并且构建工作正常。我已验证这些文件位于预期位置。

java eclipse junit gradle

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

在以Quirks模式运行的IE11中使用CSS制作灰度图像

我需要将内部旧版Web应用程序上的一些彩色图像转换为灰度图像。我认为最简单的方法是使用CSS过滤器。由于组策略,此应用程序的用户通过IE11访问它。该应用程序还必须使用Quirks(IE5)文档模式运行,否则会发生疯狂的事情(渲染问题,javascript无法正常工作等)。

我已经尝试了以下代码(以及来自hereherehere的代码)

img.desaturate {
    -webkit-filter: grayscale(100%);
    filter: gray;
    filter: grayscale(100%);
    filter: url(desaturate.svg#greyscale);
}
Run Code Online (Sandbox Code Playgroud)

没有任何效果。在此条件下(以IE5文档模式运行IE11),我可以做些什么来获取这些灰度图像,如果可以,怎么办?

注意:重新设计应用程序以使用更多现代技术目前尚无资金支持,并且将来也不会。

注意:由于有数以百万计的图像可用,因此使用某些脚本将每个图像转换为灰度并保存输出也不是一种选择。

链接到显示彩色Google徽标的示例:https : //jsfiddle.net/bq2mw5ya/2/

css internet-explorer-11

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