小编use*_*414的帖子

dynamic_cast的用例

在许多地方你可以读到这dynamic_cast意味着"糟糕的设计".但我找不到任何具有适当用法的文章(显示出良好的设计,而不仅仅是"如何使用").

我正在编写一个带有电路板的棋盘游戏和许多不同类型的卡,这些卡具有许多属性(一些卡可以放在板上).所以我决定将其分解为以下类/接口:

class Card {};
class BoardCard : public Card {};
class ActionCard : public Card {};
// Other types of cards - but two are enough
class Deck {
    Card* draw_card();
};
class Player {
    void add_card(Card* card);
    Card const* get_card();
};
class Board {
    void put_card(BoardCard const*);
};
Run Code Online (Sandbox Code Playgroud)

有些人建议我只使用一个描述卡片的课程.但我的意思是许多相互排斥的属性.对于Board类' put_card(BoardCard const&)- 它是接口的一部分,我不能把任何卡放在板上.如果我只有一种类型的卡,我将不得不在方法内检查它.

我看到的流程如下:

  • 一个通用的卡是在甲板上(这并不重要它的类型是什么)
  • 从牌组中抽取一张通用牌并交给一名牌手(与上述相同)
  • 如果玩家选择了BoardCard,那么它可以被放在棋盘上

所以我dynamic_cast在把卡片放在板子上之前使用.我认为在这种情况下使用一些虚拟方法是不可能的(另外我没有任何意义为每张卡添加一些关于板的操作).

所以我的问题是:我的设计是什么?我怎么能避免dynamic_cast?使用某些类型属性和ifs将是一个更好的解决方案......?

PS dynamic_cast在设计环境中处理使用的任何来源都是值得赞赏的.

c++ pointers reference

25
推荐指数
2
解决办法
1269
查看次数

批量标准化而不是输入标准化

我可以在输入层后立即使用批量规范化层而不规范化我的数据吗?我希望得到类似的效果/表现吗?

在keras功能中它将是这样的:

x = Input (...)
x = Batchnorm(...)(x)
...
Run Code Online (Sandbox Code Playgroud)

artificial-intelligence machine-learning neural-network keras batch-normalization

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

加快读取多个pickle文件

我有很多泡菜文件。目前我循环阅读它们,但这需要很多时间。我想加快速度,但不知道如何做到这一点。

多处理不起作用,因为为了将数据从子进程传输到主进程数据需要序列化(腌制)和反序列化。

由于 GIL,使用线程也无济于事。

我认为解决方案是一些用 C 编写的库,它需要读取文件列表,然后运行多个线程(没有 GIL)。周围有这样的东西吗?

更新 回答您的问题:

  • 文件是用于机器学习的数据处理的部分产品
  • pandas.Series对象,但预先不知道 dtype
  • 我想要很多文件,因为我们想轻松选择任何子集
  • 我想要许多较小的文件而不是一个大文件,因为一个大文件的反序列​​化需要更多的内存(在某个时间点我们已经序列化了字符串和反序列化对象)
  • 文件的大小可能会有很大差异
  • 我使用 python 3.7 所以我相信它实际上是 cPickle
  • 使用pickle非常灵活,因为我不必担心底层类型——我可以保存任何东西

python python-multithreading python-multiprocessing

16
推荐指数
2
解决办法
852
查看次数

如何在测试中模拟 ionBlur

也许我会从我想要实现的目标开始:我有一个带有必填字段的表单。默认情况下,它不应显示任何错误。如果用户触摸该字段,则应显示错误。所以我的领域或多或少是这样的:

<ion-input .... (ionBlur)="updateDispayedErrors()"></ion-input>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何测试它,因为:

  1. 运行fixture.debugElement.nativeElement.blur()不会触发ionBlur处理程序(与 相同....dispatchEvent(new Event('blur'))
  2. 普通角度(blur)不起作用(即,如果我将代码更改为(blur)="updateDisplayErrors()"那么它不起作用)
  3. 似乎在浏览器中创建的blur()本机<input .../>元素上的调用方法会起作用,但是......问题是当我运行测试时fixture.debugElement.nativeElement.childNodes是空的......所以本机<input .../>没有被创建

如果你想看一个完整的例子来说明它,请告诉我。

ionic-framework ionic4

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

在 Vim 中搜索后居中光标位置

我希望 Vim 在搜索后将光标垂直放置在屏幕中间。我已经通过我的以下行实现了 for *#n命令:Nvimrc

nmap * *zz
nmap # #zz
nmap n nzz
nmap N Nzz
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何映射/?同样的方式?换句话说,我想在使用以下命令找到某些文本后以相同的方式定位光标:

/some-text-to-find-forward
?some-text-to-find-backward
Run Code Online (Sandbox Code Playgroud)

vim

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

Python HTTP debuger

我想设置一些调试命令(如import ipdb; ipdb.set_trace()),它将在jupyter中运行调试器(我必须运行HTTP服务器).有人知道这样的事吗?

上下文:我有一个由调度程序处理的长时间运行的任务(不是交互模式).我希望能够以同样的方式运行它来调试这样的任务.

python debugging jupyter-notebook

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

.Net Maui/Xamarin 中的动态样式

假设我想显示日历。每一天 ( DayViewModel) 都可以具有影响样式的属性:

  • 是当前月份的某一天
  • 是周末
  • 有空吗

基于此,我想设计DayContentView如下样式:

  • 如果当前月份的某一天 -> 不透明度 1
  • 如果不是当前月份 -> 不透明度 0.5
  • 如果周末 -> 背景颜色是红色
  • 如果可用 -> 背景颜色为绿色

此外,最后一个属性(“是否可用”)可以根据用户的操作(单击“检查可用性”按钮)进行更改。

在其他框架中,我会创建一些样式/样式类,并根据这些标志相应地分配它们。但由于StyleClass不可绑定,我不能。我可以吗?也许有一些解决方法。

另一种选择可能是为所有组合创建单独的样式(如果需要,使用继承)。但首先,组合的数量增加了 2^n ,第二个问题是我不知道如何动态更改整个样式以更改其名称的视图。是否可以?

完成我很长的问题:如何正确/以聪明的方式做这件事?我不想在视图模型中存储颜色、字体大小、不透明度等值并手动绑定所有值。

xamarin xamarin.forms maui

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

检查参数和返回类型

是否可以使用Python 3语法声明输入参数,返回值类型是否可以确定这些类型?与确定函数的参数数量类似?

def foo(name: str) -> int:
    ....
Run Code Online (Sandbox Code Playgroud)

我想获得strint分别.

python python-3.x

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