小编Don*_*kby的帖子

有没有办法在Java中实现代数类型?

在Java中,是否有可能强制某个类具有一组特定的子类而没有其他子类?例如:

public abstract class A {}
public final class B extends A {}
public final class C extends A {}
public final class D extends A {}
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式强制执行不能创建A的其他子类吗?

java abstract-class final class adts

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

关于Java内部类的两个问题(A类{B类{}})

抱歉标题不好,但我想不出更好的一个.

我有一个A类和一个B类,它是A的一个子类,就像这样:

(它实际上是否有正确的名称?是否为继承保留"子类"?)

class A {
    int i = 0;
    class B {
        int j = 1;
    }
}

class Test {
    public static void main() {
        A a = new A();
        B b = a.new B();
        A c = ??? b ??? // get "a" back
    }
}
Run Code Online (Sandbox Code Playgroud)

从B可以访问A的每个属性,因此ai和bi都返回0.现在,我想知道是否有可能从b中检索A类型的原始对象,因为b包含a包含的所有内容?简单的铸造显然不能解决问题.

第二个:

class A {

    void print() {
        System.out.println("This is class A.");
    }

    class B {
        void print() {
            // <--- How to access print() of class A (like this.A.print() or …
Run Code Online (Sandbox Code Playgroud)

java class

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

使用CodeDomProvider进行编译不允许使用C#或VB的新功能

我正在使用CodeDomProvider,CompilerInfo和CompilerParameters在运行时编译一些C#和VB代码.它工作得很好,我真的希望能够为我的应用程序添加脚本支持,但它似乎只支持.NET 2.0语法.例如,C#不支持var关键字,VB中不支持If(bool,string,string)表达式.

我怎么能告诉它以3.5框架为目标?

.net c# vb.net scripting

6
推荐指数
2
解决办法
3010
查看次数

如何从鼠标坐标获取基数鼠标方向

是否可以根据鼠标的最后位置和当前位置获取鼠标方向(左,右,上,下)?我已经编写了代码来计算两个向量之间的角度,但我不确定它是否正确.

有人可以指出我正确的方向吗?

    public enum Direction
    {
        Left = 0,
        Right = 1,
        Down = 2,
        Up = 3
    }

    private int lastX;
    private int lastY;
    private Direction direction;

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        lastX = e.X;
        lastY = e.Y;
    }
    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        double angle = GetAngleBetweenVectors(lastX, lastY, e.X, e.Y);
        System.Diagnostics.Debug.WriteLine(angle.ToString());
        //The angle returns a range of values from -value 0 +value
        //How to get the direction from the angle?
        //if (angle > ??) …
Run Code Online (Sandbox Code Playgroud)

c# mouse position direction coordinates

6
推荐指数
2
解决办法
3968
查看次数

使用Google Apps脚本修改图形

有没有人发现使用Google Apps脚本创建或更改绘图的支持?我查看了Google文档,但是我没有看到任何绘图类.我发现了如何构建用户界面元素,而不是绘图.

我想把图纸作为文档或电子表格的一部分,但是一个独立的图纸就足够了.

drawing google-apps-script

6
推荐指数
2
解决办法
8615
查看次数

使用自定义模块修改OpenERP的核心字段之一

有时,我们的OpenERP用户希望对核心OpenERP模块中的字段进行小的更改.例如,他们希望产品屏幕的Rack,Row和Case字段长度超过16个字符.

我是否可以在不更改声明它的模块的情况下更改现有字段?我宁愿使用我们自己的自定义模块进行更改,而不是编辑product模块本身.

openerp odoo

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

使用模拟对象简化 Django 测试设置

通常,当我为 Django 项目编写测试时,我必须编写比实际测试被测对象更多的代码来设置数据库记录。目前,我尝试使用测试装置来存储相关字段,但是我可以使用模拟对象来模拟需要大量工作来设置的相关表吗?

这是一个简单的例子。我想测试一个Person对象是否会spawn()根据其健康状况生成子对象。

在这种情况下,一个人的城市是必填字段,所以我必须先设置一个城市,然后才能创建一个人,尽管城市与该spawn()方法完全无关。我怎样才能简化这个测试而不需要创建一个城市?(在一个典型的示例中,不相关但必需的设置可能是数十或数百条记录,而不仅仅是一条。)

# Tested with Django 1.9.2
import sys

import django
from django.apps import apps
from django.apps.config import AppConfig
from django.conf import settings
from django.db import connections, models, DEFAULT_DB_ALIAS
from django.db.models.base import ModelBase

NAME = 'udjango'


def main():
    setup()

    class City(models.Model):
        name = models.CharField(max_length=100)

    class Person(models.Model):
        name = models.CharField(max_length=50)
        city = models.ForeignKey(City, related_name='residents')
        health = models.IntegerField()

        def spawn(self):
            for i in range(self.health):
                self.children.create(name='Child{}'.format(i))

    class Child(models.Model):
        parent = models.ForeignKey(Person, related_name='children')
        name = …
Run Code Online (Sandbox Code Playgroud)

python django unit-testing

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

QFileDialog 总是在主窗口后面打开

我试图在我的 PySide2 应用程序中打开一个文件,但文件对话框总是在主窗口下方打开,并在启动器中显示为另一个应用程序。应用程序的名称是“门户”。

我看到其他答案,其中解决方案是将主窗口作为第一个参数传递给getOpenFileName(),但这对我不起作用。

这是问题的简单演示:

import sys
from PySide2.QtWidgets import QPushButton, QFileDialog, QApplication


class DemoButton(QPushButton):
    def __init__(self, text):
        super().__init__(text)
        self.clicked.connect(self.on_click)

    def on_click(self):
        file_name, _ = QFileDialog.getOpenFileName(
            self,
            "Open a text file.",
            filter='Text file (*.txt)')
        print(file_name)


def main():
    app = QApplication(sys.argv)
    button = DemoButton("Hello World")
    button.show()
    app.exec_()
    sys.exit()


main()
Run Code Online (Sandbox Code Playgroud)

我想也许父母必须是一个QMainWindow,所以我试过:

import sys

from PySide2 import QtWidgets


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        main_widget = QtWidgets.QWidget(self)
        self.setCentralWidget(main_widget)

        # layout initialize
        g_layout = QtWidgets.QVBoxLayout()
        layout = …
Run Code Online (Sandbox Code Playgroud)

python pyside2

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

MyPy 抱怨 Qt.AlignmentFlag

当我升级到 PySide6 6.2.2 时,MyPy 开始抱怨Qt.AlignmentFlag. 这是一个小例子:

from PySide6.QtGui import Qt
from PySide6.QtWidgets import QLabel, QApplication

app = QApplication()
label = QLabel("Hello, World!")
label.setAlignment(Qt.AlignCenter)
label.show()

app.exec()
Run Code Online (Sandbox Code Playgroud)

仍然运行良好,但 MyPy 抱怨:

$ mypy foo.py 
foo.py:6: error: Argument 1 to "setAlignment" of "QLabel" has incompatible type "AlignmentFlag"; expected "Alignment"
Found 1 error in 1 file (checked 1 source file)
$
Run Code Online (Sandbox Code Playgroud)

好的,我尝试将 转换AlignmentFlagAlignment.

from PySide6.QtGui import Qt
from PySide6.QtWidgets import QLabel, QApplication

app = QApplication()
label = QLabel("Hello, World!") …
Run Code Online (Sandbox Code Playgroud)

qt pyside6

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

Touch 用户无法在 React 应用程序中拖放

我遵循了dnd kit React 库的快速入门,它让我可以用鼠标很好地拖放。但是,当我尝试在 Android 上使用 Chrome 的同一页面时,我无法拖动该项目。看起来它开始移动,然后当我的手指移出其原始边界时就被卡住了。

我尝试切换到拖动叠加,但这似乎没有任何区别。

如何使用 dnd 套件支持触摸用户?

drag-and-drop touch reactjs dnd-kit

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