小编fib*_*era的帖子

Haskell - sortBy函数

我有一个矢量列表.但现在我想使用sortBy函数按照它们的长度对这个向量列表进行排序.我已经是:

import Data.List

vectorLength::(Int,Int)->Float
vectorLength(x,y) = sqrt(fromIntegral ((x^2)+(y^2)))

sortVectors::[(Int, Int)]->[(Int, Int)]
sortVectors list = sortBy(map vectorLength list) list

main = do
    print(map vectorLength [(1,4), (2,6), (-2, -8), (3, -4)])
    print(sortVectors[(1,4), (2,6), (-2,-8), (3, -4)])
Run Code Online (Sandbox Code Playgroud)

vectorLength函数确实有效.

map vectorLength [(1,4), (2,6), (-2,-8),(3,-4)]   
output: [4.1231055, 6.3245554, 8.246211, 5.0]
Run Code Online (Sandbox Code Playgroud)

我想在调用以下函数时

sortVectors [(1,4), (2,6), (-2,-8), (3,-4)]  
output: [(-2,-8), (2,6), (3,-4), (1,4)]
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

Couldn't match expected type `(Int, Int)' with actual type `[a0]'
    Expected type: (Int, Int) -> (Int, Int) -> Ordering
      Actual type: [a0] -> …
Run Code Online (Sandbox Code Playgroud)

haskell

13
推荐指数
2
解决办法
7157
查看次数

从休眠列表中选择所有项目

我有一个产品ID列表,我希望通过hibernate查询从我的数据库中获取所有产品.我怎样才能做到这一点?

List<Integer> list = custumor.getCart();
Query query = query("select product from Product product where product.id =: list");
Run Code Online (Sandbox Code Playgroud)

我知道这不是解决这个问题的最佳方法,但我只想知道如何测试列表中的所有值.

java sql database hibernate

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

实施strafe - Opengl - 相机

我创建了一个相机类.可以用我的鼠标旋转360度并上下移动.正如我的意图,就像在所有游戏中一样.也可以像所有游戏一样前进和后退.但我不知道如何实现向左和向右移动.

我做以下事情:

每帧调用一次:

gluLookAt(_posX , _posY , _posZ,
          _viewX, _viewY, _viewZ,
          _upX,   _upY,   _upZ );
Run Code Online (Sandbox Code Playgroud)

我的移动功能
不起作用:

void Camera::moveLeft() 
{

    float rot= (_viewY / 180 * PI);
    _moveX -= float(cos(rot)) * 0.5;
    _moveZ -= float(sin(rot)) * 0.5;
}
Run Code Online (Sandbox Code Playgroud)

工作是否
在场景中向前移动:

void Camera::moveForward() 
{

    float viewX = _viewX - _posX;
    float viewY = _viewY - _posY;
    float viewZ = _viewZ - _posZ;

    _posX += viewX * speed
    _posY += viewY * speed;
    _posZ += viewZ * speed;

    _viewX += viewX * …
Run Code Online (Sandbox Code Playgroud)

opengl camera

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

视图中的MousePressEvent和Qt中的项目

我有一个自定义QGraphicsView和一个自定义QGraphicsItem.如果我点击该项目,我希望项目处理我的点击,否则我希望点击由视图处理.

但是当我点击该项目时,该项目处理点击.还行吧.但是,如果我点击其他地方,则根本不会处理点击.我的类中与mouseEvents有关的所有代码如下.

class CustomView : public QGraphicsView
{
    Q_OBJECT

public:

    void mousePressEvent(QGraphicsSceneMouseEvent *event);

};

void CustomView::mousePressEvent(QGraphicsSceneMouseEvent *event){
    cout << "pressing in view";
}

class CustomItem : public QGraphicsItem
{
public:
    CustomItem(CustomView* widget)
    void mousePressEvent(QGraphicsSceneMouseEvent *event);
};

CustomItem::CustomItem(CustomView* widget){
    setFlag(ItemIsSelectable);
    setFlag(ItemIsMovable);
}

void CustomItem::mousePressEvent(QGraphicsSceneMouseEvent *event){
    cout << "pressing in item";
}
Run Code Online (Sandbox Code Playgroud)

似乎当我从CustomItem类中删除mousePressEvent函数并在CustomView中将mousePressEvent函数更改为:

void CustomView::mousePressEvent(QMouseEvent *event){
    cout << "pressing in view";
}
Run Code Online (Sandbox Code Playgroud)

CustomView处理所有mouseEvents.

如何让CustomItem处理项目中的点击,而CustomView处理所有其他点击?

谢谢.

编辑

所以现在我把它改成了:

    class CustomView : public QGraphicsView
{
    Q_OBJECT

public:

};

 class CustomScene : public QGraphicsScene
{ …
Run Code Online (Sandbox Code Playgroud)

qt mouseevent mousepress

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

轮询是否阻止LinkedBlockingQueue中的其他操作?

在下面的伪代码中,我有一个poll()在主线程中永远调用的函数.如果我在没有sleep()声明的情况下执行此操作,则poll()每分钟只有2-3个项目被另一个线程添加到队列中.这是否意味着轮询会阻止该put()声明?

我怎么解决这个问题?

public class Test extends Thread{
    private LinkedBlockingQueue<Object> queue = null;

    Test(){
        queue = new LinkedBlockingQueue<Object>(10);
    }

    public void run(){
        // Do stuff, get incoming object from network
        queue.put(o);
    }

    public Object poll(){
        Object o = queue.poll();
        sleep(1000);
        return o;
    }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading blockingqueue

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