小编dab*_*aba的帖子

为什么使用复制构造函数而不是赋值运算符

这是如何MyClass定义的:

class MyClass {
    double x, y;
    public:
        MyClass (double a = 0., double b = 0.) {
            x = a;
            y = b;
            cout << "Using the default constructor" << endl;
        }
        MyClass (const MyClass& p) {
            x = p.x;
            y = p.y;
            cout << "Using the copy constructor" << endl;
        }
        MyClass operator =(const MyClass& p) {
            x = p.x;
            y = p.y;
            cout << "Using the assignment operator" << endl;
            return *this;
        }
};
Run Code Online (Sandbox Code Playgroud)

我测试了在我的主程序中调用每个构造函数或方法时: …

c++

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

不需要定义基类析构函数?

在我看到的所有关于多态性的例子中,基类的析构函数virtual是用空体定义的.

我试图解决这个问题:为什么它必须是一个空的身体?如果方法刚刚声明为virtual但没有用emtpy体定义,为什么它不起作用?它不会被默认的析构函数实现吗?或者它被宣布为virtual甚至是默认定义并强制明确定义正文的事实?

这就是我的意思:

class A {
public:
    virtual void f();
    virtual ~A() {}
}

class B : public A {
public:
    ~B() {
        // destroy whatever
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么没有定义就不能 ~A()这样声明virtual ~A();

另外,为什么必须在抽象类中定义它(使用空体)?我试图声明像这样的抽象类的destuctor,virtual ~A() = 0编译器不允许我这样做.

c++

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

Java 8流:计数值

我试图使用Java 8流来获取列表中值集合中对象的发生次数,但我还是无法掌握它.

这就是我想要做的:

int threshold = 5;
for (Player player : match) { // match is a Set<Player>
    int count = 0;
    for (Set<Player> existingMatch : matches)
        if (existingMatch.contains(player))
            count++;
    if (count >= threshold )
        throw new IllegalArgumentException("...");
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用collect和分组groupingBy,并使用过滤器说要应用的操作是contains使用新方法引用运算符.但是我对这些新的Java 8功能仍然太过绿色,并且无法将它们整合在一起.

那么我如何使用Stream 提取列表player所有值集的出现次数?

java lambda java-8 java-stream

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

杰克逊:引用相同的对象

在某些情况下,在主体中序列化或反序列化的数据(例如,JSON主体)包含对同一对象的引用.例如,一个包含玩家列表的JSON主体,以及由这些玩家组成的团队列表:

{
  "players": [
    { "name": "Player 1" },
    { "name": "Player 2" },
    { "name": "Player 3" },
    { "name": "Player 4" },
    { "name": "Player 5" },
    { "name": "Player 6" },
    { "name": "Player 7" },
    { "name": "Player 8" }
  ],
  "teams": [
    {
      "name": "Team 1",
      "players": [
        { "name": "Player 1"},
        { "name": "Player 2"}
      ]
    },
    {
      "name": "Team 2",
      "players": [
        { "name": "Player 3"},
        { "name": "Player 4"}
      ]
    },
    { …
Run Code Online (Sandbox Code Playgroud)

java json jackson

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

如何在 BadRequestException 中包含消息?

是否可以在 a 中包含一条消息,BadRequestException以便当用户看到响应代码 a 400 时,他/她也能找出原因?

场景会是这样的,经过简化:

public Entity getEntityWithOptions(@PathParam("id") String id, @QueryParam("option") String optValue) {
    if (optValue != null) {
        // Option is an enum
        try {
            Option option = Option.valueOf(optValue);
        } catch (IllegalArgumentException e) {
            throw new BadRequestException(e.getMessage());
        }
        return new Entity(option);
    }
    return new Entity();
}
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过返回一个对象来完成Response,但我不希望这样做。

这可能吗?也许有一个ExceptionMapper<BadRequestException>?或者这不能完成,因为BadRequestException已经是泽西岛特定的例外?

java web-services http jax-rs jersey

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

为什么[]和bool返回[]?

我试图在这样的函数中返回一个布尔值:

return mylist and any(condition(x) for x in mylist)
Run Code Online (Sandbox Code Playgroud)

True如果列表为空或者其中的任何元素满足条件,则应该返回行为.我使用第一个操作数作为短路,因为如果列表为空则any返回True,这不是我所追求的.

我希望[] and boolval返回False,因为该列表是空的,但让我吃惊,它返回[]是否boolvalTrueFalse.我希望第一个操作数被自动计算为布尔值,因为它涉及比较操作,而不是发生的任何事情.

我并不是真的在问如何解决我的问题,这可以通过显式类型转换轻松完成:bool(mylist)而是询问发生了什么以及为什么.

编辑:当我问"为什么"这种情况发生时,我不仅仅在寻找"事实",因为它们已经在链接的重复问题中进行了解释,而且还有实施此行为背后的原因.

python python-2.7

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

将样式添加到 link_to

我不喜欢link_to帮手和类似的东西。我正在尝试向我的链接添加样式,但我无法做到,因为根据文档,参数是选项和 html_options,但是我使用的一些参数甚至没有列在文档中,link_to所以我不不知道哪些是选项,哪些是 html_options,所以我无法重新排列哈希。

<%= link_to '+', :controller => 'shop', :action => 'add', :id => product, :remote => true %>
Run Code Online (Sandbox Code Playgroud)

我应该如何重新排列散列以允许我添加:styles => 'color:red;.....'

ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

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

使用Laravel从API获取JSON响应

我只是在搞乱API,现在我正试图在我的应用程序中使用Google Directions API.

我创建了一个表单来获取用户的输入并检索此数据并在routes.php文件中创建URI :

Route::get('/directions', function() {
    $origin = Input::get('origin');
    $destination = Input::get('destination');

    $url = "http://maps.googleapis.com/maps/api/directions/json?origin=" . $origin . "&destination=" . $destination . "&sensor=false";
});
Run Code Online (Sandbox Code Playgroud)

该URL的响应是JSON.但是现在,我怎么能与Laravel一起存储这个回复?我一直在看Laravel中的Http命名空间,但我找不到方法.如果用Laravel无法完成,怎么用普通的php完成?

php json response laravel laravel-4

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

如果值为空,则删除键

假设我们有一个Map<Key, Collection<Value>> myMap方法可以从与键关联的集合中删除一个值.如果删除一个值会使集合变空,我们想要删除key地图中的条目:

List<Value> removeValue(Key key, Value value) {
    List<Value> v = myMap.get(key);
    if (v != null) {
        v.remove(value);
        if (v.isEmpty())
            myMap.remove(key);
    }
    return v;
}
Run Code Online (Sandbox Code Playgroud)

是否有任何Java 8方法通过单线程或更短的方法来实现所描述的行为?

java java-8

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

使用Java 8安全地从集合中删除项目

我试图迭代一个集合使用,forEach但实现调用remove(Object o)该集合是不安全的,可能会导致ConcurrentModificationException.这就是我想要做的事情:

public void removeMatchup(Set<Player> players) {
        predefinedMatchups.stream().filter(m -> m.getPlayers().equals(players)).forEach(m -> predefinedMatchups.remove(m));
}
Run Code Online (Sandbox Code Playgroud)

所以我改变了这个:

public void removeMatchup(Set<Player> players) {
    Iterator<Matchup> iterator = predefinedMatchups.iterator();
    while (iterator.hasNext())
        if (iterator.next().getPlayers().equals(players))
            iterator.remove();
}
Run Code Online (Sandbox Code Playgroud)

我真的很喜欢简洁的流,这就是为什么我要重新整理我的整个项目以包含Java 8的新功能.

是否有解决此问题的方法,我可以在执行安全删除时使用流?

java java-8

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