小编Ash*_*ley的帖子

CSS3过渡到不影响其他元素?

是否可以进行不影响附近元素位置的高度过渡?

这个特殊情况涉及带浮点数的div:left.

演示:http: //ashleystewart.me/

我希望悬停过渡到你可以看到移动的元素之上.

html css positioning css3 css-transitions

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

检查该列表是否包含另一个列表中存在的所有类型的元素

我有两个Python列表:组件签名.我想检查签名中列出的所有类型是否与组件列表中的至少一个元素匹配.

在这里,签名匹配的组件列表,因为那里既是字符串,并以浮动组件:

signature = [float, str]
components = [1.0, [], 'hello', 1]
Run Code Online (Sandbox Code Playgroud)

这里签名 组件不匹配,因为没有列表类型.

signature = [float, list]
components = ['apple', 1.0]
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Python 3中表达这个条件?

python types list python-3.x

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

什么时候应该在Python中使用'assert'?

在某些情况下,我使用Doyren库(libtcod)在Python中制作了一个Roguelike游戏。我更习惯于对对象进行强类型化的C ++。

我正在编写几个类,例如GameMap,GameObject等。其中许多类都包含需要某些类型的方法,例如:

class GameMap:
    ...
    def add_object(self, game_object, x, y):
        ...
Run Code Online (Sandbox Code Playgroud)

此方法将GameObject game_object添加到地图上的坐标(x,y)。显然有几种方法可以滥用此功能:

  • 非GameObject可以作为game_object传递
  • 非整数可以作为x或y传递
  • 负整数可以作为x或y传递
  • 超出地图宽度的整数可以作为x传递
  • 超出地图高度的整数可以作为y传递

我的问题是:处理方法滥用的Python方法什么?

我看到几种可能性:

选项1:在方法开始时布置一系列断言:

def add_object(self, game_object, x, y):
    assert(isinstance(game_object, GameObject)
    assert(type(x) == type(y) == int)
    assert(0 <= x < self.map_width and 0 <= y < self.map_height)
    ...
Run Code Online (Sandbox Code Playgroud)

当我将它们复制并粘贴到GameMap中的许多方法中时,这些断言变得相当重复,这就是为什么我还提供选项2的原因:

选项2:在自己的函数中编写断言,并在需要时调用它们以防止复制+粘贴

def check_game_object(self, game_object):
    assert(isinstance(game_object, GameObject)

def check_coordinate(self, x, y):
    assert(type(x) == type(y) == int)
    assert(0 <= x < self.map_width and 0 <= y < self.map_height)

def add_object(self, game_object, x, …
Run Code Online (Sandbox Code Playgroud)

python testing unit-testing assert python-3.x

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

共享指针仅通过std :: shared_ptr初始化.std :: make_shared构造函数不起作用

我正在使用SDL2和C++制作基本游戏.我一直在慢慢改变我对原始指针的使用,以更安全的智能指针.

_window变量是一个私有类成员:

private:
    std::shared_ptr<SDL_Window> _window;
Run Code Online (Sandbox Code Playgroud)

以下代码有效:

_window = std::shared_ptr<SDL_Window>(SDL_CreateWindow(
        "Game",
        SDL_WINDOWPOS_UNDEFINED,
        SDL_WINDOWPOS_UNDEFINED,
        SCREEN_WIDTH,
        SCREEN_HEIGHT,
        SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE
));
Run Code Online (Sandbox Code Playgroud)

以下代码不起作用:

_window = std::make_shared<SDL_Window>(SDL_CreateWindow(
        "Game",
        SDL_WINDOWPOS_UNDEFINED,
        SDL_WINDOWPOS_UNDEFINED,
        SCREEN_WIDTH,
        SCREEN_HEIGHT,
        SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE
));
Run Code Online (Sandbox Code Playgroud)

抛出以下错误:

C:\...\include\type_traits(984): error C2027: use of undefined type 'SDL_Window'
Run Code Online (Sandbox Code Playgroud)

这非常令人困惑,因为它type_traits是标准库的一部分.因此,我不确定错误来源的位置,但在此处包含我的整个项目是不可行的.

什么可能导致抛出这样的错误,只需std::shared_ptr改为std::make_shared

c++ pointers sdl smart-pointers c++11

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