小编m93*_*93a的帖子

在 sympy 中,使用规范交换关系简化表达式

我有一个梯形运算符\xc3\xa2,它用它自己的伴随满足这个换向器关系:

\n\n
\n

[\xc3\xa2,\xc3\xa2\xe2\x81\xba] = 1

\n
\n\n

在 sympy 中我写了这段代码:

\n\n
import sympy\nfrom sympy import *\nfrom sympy.physics.quantum import *\n\na = Operator(\'a\')\nad = Dagger(a)\n\nccr = Eq( Commutator(a, ad),  1 )\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在我需要扩展和简化这样的表达式:

\n\n
\n

(\xc3\xa2\xe2\x81\xba + \xc3\xa2)\xe2\x81\xb4

\n
\n\n

如果我只使用((ad + a)**4).expand(), sympy 不会使用换向器关系。使用规范交换子关系时如何简化表达式?

\n

python physics sympy

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

如何在使用 Compiler API 进行类型检查之前转换 TypeScript 代码

意图

我想使用 TypeScript 的编译器 API来试验TypeScript 代码中的运算符重载。具体来说,我想找到 的所有实例x + y并将它们转换为op_add(x, y). 但是,我希望语言服务(例如 VS Code 中的 IntelliSense)了解转换并显示正确的类型。

例如在这段代码中:

interface Vector2 { x: number, y: number }
declare function op_add(x: Vector2, y: Vector2): Vector2
declare let a: Vector2, b: Vector2

let c = a + b
Run Code Online (Sandbox Code Playgroud)

我希望当我将鼠标悬停在上面时c,它会显示Vector2.


计划

为了实现这一目标,我必须:

  1. 创建一个公开相同 API 的程序typescript– 以同样的方式ttypescript
  2. 使该程序在将其传递给之前修改源代码 typescript
  3. 让 VS Code(或任何编辑器)使用我的包而不是 typescript

执行

我开始通过创建一个称为短脚本compile.ts使用该编译器API解析一个名为sample.tsAST。然后它直接修改 …

typescript typescript-compiler-api

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

如何在 CRA 中允许命名空间?

我使用以下方法创建了一个 TypeScript React 应用程序:

\n\n
yarn create react-app my-app --template typescript\n
Run Code Online (Sandbox Code Playgroud)\n\n

这样,我的项目就用Babel编译,然后由webpack捆绑。现在我想使用 TypeScript命名空间,默认情况下 Babel 不支持它们,但可以启用它们。我\xc2\xa0安装了所有必需的软件包:

\n\n\n\n

package.jsonreact-scripts start改为react-app-rewired start.

\n\n

最后,我创建了一个config-overrides.js文件:

\n\n
const {\n    override,\n    addExternalBabelPlugin\n  } = require("customize-cra");\n\nmodule.exports = override(\n    addExternalBabelPlugin([\n        "@babel/plugin-transform-typescript",\n        { allowNamespaces: true }\n    ])\n);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,编译仍然会抛出语法错误,就好像没有启用插件一样:

\n\n
\n

语法错误:/home/m93a/my-app/script.ts:命名空间未标记为仅类型声明。Babel 仅实验性地支持非声明性命名空间。要启用和查看警告,请参阅:https://babeljs.io/docs/en/babel-plugin-transform-typescript

\n
\n\n

如何正确设置我的项目,以便它甚至可以编译非声明性命名空间?

\n\n
\n\n

编辑:我的项目不起作用的原因实际上与我的想法有很大不同。检查我自己的答案以获取更多详细信息。

\n

typescript webpack babeljs react-scripts

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

成员请求*in*,非类型*

我正在尝试用C++创建一个动态数组类,但是我得到了一些指针错误,例如.在第23行,我需要将pointer值(引用号)更改为值this.first,也是指针 - pointer并且this.first应该指向相同的值.

#include <string>
#include <iostream>
using namespace std;

class ArrayMember {
    public:
        ArrayMember* next;
        ArrayMember* prev;
        int index;
        int value;
        ArrayMember(){}
};

class Array {
    private:
        ArrayMember* first;
        ArrayMember* last;
        int length;

    public:
        int get(int index){
        ArrayMember* point;

        if(index<length/2){
            point = this.first; //error: request for member ‘first’ in ‘this’, which is of non-class type ‘Array* const’
            while(*point.index != index) { // error: request for member ‘index’ in ‘point’, which is of …
Run Code Online (Sandbox Code Playgroud)

c++

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

读取对象数组的c ++会导致SIGSEGV

我有两个类:Vector和Particle ......

class Vector {
public:
    float x,y;
};

class Particle {
public:
    Vector* coord;
    Particle(Vector* coord)
    {
        this->coord = coord;
    };
};
Run Code Online (Sandbox Code Playgroud)

...和一个像这样声明的数组:

Particle* particles [PARTICLES];
Run Code Online (Sandbox Code Playgroud)

这是我的主要内容:

int main(int argc, char** argv)
{
    //Write
    int i = 0;
    do{
        particles[i] = new Particle(new Vector());
    }while(
           ++i<PARTICLES
           );
    i = 0;

    //Read
    int j = 0;
    float s = .0f,
    a = .0f;
    Vector vi = *(particles[0]->coord),
    vj = *(particles[0]->coord);
    do{
        do{
            if(i!=j){
                vi = *(particles[i]->coord);
                vj = *(particles[j]->coord); //FIXME …
Run Code Online (Sandbox Code Playgroud)

c++ arrays object segmentation-fault

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

将 TypeScript 联合类型分解为特定类型

我想知道是否可以在 TypeScript 中将联合类型“拆分”为特定的子类型。这是我尝试使用的代码,很明显我试图从代码段中实现:

type SplitType<T> =
T extends (infer A)|(infer B)
? Something<A, B>
: T;
Run Code Online (Sandbox Code Playgroud)

在这个例子中Something<A, B>可以是[A, B],或者是一个完全不同的类型。这意味着SplitType<string>只会输出 a string,但SplitType<number|string>意味着[number, string].

在 TypeScript 中可能有这样的事情吗?如果没有,将来是否有允许这样做的功能(例如可变参数类型)?

generics typescript union-types

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

`string &amp; any[]` 不应该导致 `never` 吗?

我注意到 TypeScript 有一些奇怪的地方。我有一个类型联合,其中包含一些数组类型(string[], number[])和一些非数组类型(string, number)。如果我使用类型推断,一切都会按预期进行:

type bar = string | number | string[] | number[];
declare foo: bar;

if (Array.isArray(foo))
{
    foo // string[] | number[]
}
else
{
    foo // string | number
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想将类型直接限制为数组类型并使用类型交集,我会得到一些意想不到的结果:

declare foo: bar & any[];

// expected type: string[] | number[]

foo // (string & any[]) | (number & any[]) | (string[] & any[]) | (number[] & any[])
Run Code Online (Sandbox Code Playgroud)

这是为什么?
不应该string & any[]评估 toneverstring[] …

typescript

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

什么是深奥语言的正确mime类型

什么是正确的mime类型的深奥语言?
我到处搜索,我甚至试图问查克诺里斯,但我没有在任何地方找到答案.

我已经为Brainfuck尝试了这些:

application/brainfuck
application/x-brainfuck
application/x+brainfuck
x-esoteric/x-brainfuck
chuck-norris-choice/brainfuck
x-you-lost-the-game/x-fuck-your-brain
42/++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
Run Code Online (Sandbox Code Playgroud)

但它们似乎都没有奏效.

esoteric-languages brainfuck mime-types

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