小编OOP*_*dio的帖子

在 JavaScript 中定义无类对象的 Java 等价物是什么?

我想知道是否可以像在 JavaScript 中那样在 Java 中内嵌声明一个对象。例如,在 JavaScript 中我可以说

let nameOfObject = {
    anyKey: "my value",
    someOtherValue: 5
};

console.log(nameOfObject.anyKey);// This logs "my value"
Run Code Online (Sandbox Code Playgroud)

这将创建一个无类对象并分配 nameOfObject其为各种“指针”......我如何在 Java 中做到这一点?如何创建没有类的对象?

我找到了一种可能的解决方案,看起来像

Object nameOfObject = new Object(){
    public String anyKey = "my value";
    public int someOtherValue = 5;
};

System.out.println(nameOfObject.anyKey);
Run Code Online (Sandbox Code Playgroud)

但这似乎无法编译,并说“无法解析 anyKey”,并且根据其他一些消息来源,根本无法使用...

所以我可能做错了一些事情,或者可能有不同的方法,或者它可能直接用 Java 是不可能的,我需要以不同的方式来做......


class Some{
    public String anyKey;
}

Some some = new Some() {
    this.anyKey = "my value";
};
Run Code Online (Sandbox Code Playgroud)

这段代码抛出一个错误说Syntax error, insert ";" to complete declaration,但是

class Some{
    public …
Run Code Online (Sandbox Code Playgroud)

java object

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

为什么在定义对数组时需要额外的花括号对?

很抱歉,如果这是一个常见问题,我不知道如何搜索它,所以我认为最好只是问一下。

我想在 C++ 中定义一个std::arrayofstd::pair来存储 SFML sf::IntRects。我搞砸了大约 10 分钟,最后意识到这个可以编译:

std::array<std::pair<sf::IntRect, sf::IntRect>, 1> aliens{
    {
        {sf::IntRect{2,3,1,2}, sf::IntRect{4,1,3,2}}
    }
};
Run Code Online (Sandbox Code Playgroud)

为什么我需要在这对本身周围加上一组额外的大括号?当我把它们带走时:

std::array<std::pair<sf::IntRect, sf::IntRect>, 1> aliens{
    {sf::IntRect{2,3,1,2}, sf::IntRect{4,1,3,2}}
};
Run Code Online (Sandbox Code Playgroud)

我收到一个错误No suitable user-defined conversion from "sf::IntRect" to "std::pair<sf::IntRect,sf::IntRect>" exists

这些大括号是做什么的?我无法想象他们需要做什么。

c++ arrays

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

如何将 Pixi.js 导入 TypeScript 项目?

我是 Pixi.js 的新手,但我有一些使用 TypeScript 的经验。我真的很难将 Pixi.js 导入到我的项目中。

我使用 Pixi 和普通 JavaScript 的 CDN 导入运行了一个小型 Pixi.js 项目,现在我尝试在 TypeScript 上运行相同的项目。我认为我的选择之一是使用 Pixi 的 CDN 导入,然后导入 Pixi 的类型定义,但我在几个地方读到 Pixi 的后续版本已经用 TypeScript 编写,所以我认为这不是一个对于我来说,使用该库的 JavaScript 版本然后导入我自己的 TypeScript 定义是一个不错的选择。

我尝试使用npm install pixi.js然后,import * as PIXI from "pixi.js";但这给了我这个 TypeScript 错误: This module is declared with using 'export =', and can only be used with a default import when using the 'allowSyntheticDefaultImports' flag. 并且当我强制它编译时,它也会给我这个浏览器错误: Uncaught TypeError: Failed to resolve module specifier "pixi.js". Relative references must …

javascript import node.js typescript pixi.js

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

如何使用 ws 包在 SvelteKit 内设置 WebSocket 服务器?

我正在尝试创建一个将在 SvelteKit 应用程序中运行的简单 WebSocket 服务器。我在网上找到了这个教程,它展示了如何使用 Socket.io 来完成此操作,但是我想改用该ws模块。

这是vite.config.ts我迄今为止提出的文件:

import type { UserConfig } from 'vite';

import { sveltekit } from '@sveltejs/kit/vite';

import { WebSocketServer } from "ws";

const webSocketServer = {
    name: "webSocketServer",
    configureServer: () => {
        const webSocketServer = new WebSocketServer({
            port: 8080
        });
    
        webSocketServer.on("connection", (socket, request) => {
            socket.on("message", (data, isBinary) => {
                console.log(`Recieved ${data}`);
            });
        
            socket.send("test from server");
        });
    }
}

const config: UserConfig = {
    plugins: [sveltekit(), webSocketServer]
};

export …
Run Code Online (Sandbox Code Playgroud)

websocket node.js ws vite sveltekit

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

给定一个具有固定端点的三次贝塞尔曲线,当给定要检查的 y 位置时,如何找到沿它的点的 x 位置?

假设我有一条贝塞尔曲线,有两个固定端点,一个在x(0), y(1),一个在x(1), y(0)(左下角和右上角) 现在假设我有两个控制点,可以在 x(0), x(1) 之间的任何位置)、y(0) 和 y(1)。对于这个问题,我只会说控制点 #1 在 x(0.1) y(0.6) 处,控制点 #2 在 x(0.9) 和 y(0.4) 处。(这假设一个“从左上角”坐标系)

这是我们曲线的一个小插图:

我们的贝塞尔曲线

现在假设我的 y 位置为 0.7。计算出对应的 x 位置到 y(0.7) 点的数学公式是什么?我该怎么做?


对不起,如果这个问题不属于这里,但我认为这是编码中面临的一个常见问题,而且你们中的许多人可能都有我正在寻找的答案。

math bezier cubic-bezier

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

向点击按钮的人发送一条临时消息

我想在消息上显示按钮,但只允许消息的原始请求者与按钮交互。如果其他人点击了按钮,那么我想向他们发送一条秘密消息,告诉他们他们的点击被忽略了。

我已经研究这个问题有一段时间了,我不断发现人们说这是不可能的,但 Dank Memer 机器人已经做到了这一点!如果您点击其他人的消息上的按钮,那么机器人会向您发送一条消息,指出“此菜单不适合您”。它会说“只有你可以看到此消息”

目前我有这个代码

const collector = message.createMessageComponentCollector({ componentType: "BUTTON", time: 15000});

collector.on("collect",collected => {
    if(collected.user.id !== interaction.user.id){
        //collected.member.send("This command is being controlled by somebody else.");
        // What can I put in here to send an ephemeral message to collected.user?? I can send them a DM using .send(), but that's not what I want.
        return;
    }
    if(collected.customId === "confirm"){
        interaction.followUp("Success");
    }else{
        interaction.followUp("Ignore");
    }
});
Run Code Online (Sandbox Code Playgroud)

这是 Dank Memer 做这件事的照片……这让我相信这是可能的。(他这么说是为了回应我要求在一个帐户上提供排行榜,然后尝试在另一个帐户上进行导航。)

Dank Memer 做我被告知的事情是不可能的

请告诉我这是如何做到的!

javascript node.js discord.js

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