长期以来,Pythoneer Tim Peters简洁地将BDFL的设计指导原则引入20个格言中,其中只有19个被写下来.
这第二十句格言是什么?它是否存在,或仅仅是一种使读者思考的修辞手段?
(对我来说,一个可能的答案就是"你不需要它"是剩下的格言.如果是这样的话,它既存在又可以让读者思考,并且它的特点是有趣,因此更适合列表.但网络搜索表明这是一个极端的编程口头禅,而不是本质上的Pythonic智慧,所以我很难过.)
C11支持匿名结构,如下所示:
struct Foo
{
struct
{
size_t x, y;
};
};
struct Foo f;
f.x = 17;
f.y = 42;
Run Code Online (Sandbox Code Playgroud)
基本上,这样的成员struct被视为封闭的成员struct或union(如果封闭结构本身是匿名的,则递归地).
C++ 11的理由是什么,还包括匿名结构?当然,它们只是非常有用(主要是在工会内部,以消除标识符的输入struct).但它们似乎是对规范的明显补充(以及已经由许多编译器实现的规范),它们肯定必须经过讨论,至少是为了保持与C11标准的兼容性.那他们为什么不加?
我正在制作一个非常基本的地图编辑器.我已经完成了一半,我遇到的一个问题是如何删除一个对象.
我想按删除但似乎没有图片框的keydown事件,看起来我将只在我的列表框上.
在我的编辑器中删除对象的最佳解决方案是什么?
我想创建一个Unicode代码点数组,它构成JavaScript中的空白区域(减去我分别处理的Unicode白空间代码点).这些字符包括水平制表符,垂直制表符,换页符,空格,不间断空格和BOM.我可以用魔术数字做到这一点:
whitespace = [0x9, 0xb, 0xc, 0x20, 0xa0, 0xfeff]
Run Code Online (Sandbox Code Playgroud)
这有点模糊; 名字会更好.通过的unicodedata.lookup方法ord有助于:
>>> ord(unicodedata.lookup("NO-BREAK SPACE"))
160
Run Code Online (Sandbox Code Playgroud)
但这不适用于0x9,0xb或0xc - 我认为因为它们是控制字符,而"名称"FORM FEED等只是别名.有没有办法将这些"名称"映射到标准Python中的字符或其代码点?还是我运气不好?
C++ 11 [atomics.types.generic] p7:
应该有与
atomic表145中规定的整数特化相对应的命名类型,以及atomic_bool与指定的对应的命名类型atomic<bool>.每个命名类型都是相应特化的typedef 或相应特化的基类.如果它是基类,它应支持与相应的特化相同的成员函数.
(重点补充)
对于所有其他类型而言,std::atomic_char不相同的理由是什么std::atomic<char>,等等?这实现了什么灵活性,为什么它有用?乍一看,我不明白为什么不需要std::atomic<T>直接将typedef作为typedef .
请注意,提出的N2427<atomic>表明typedef完全是特化,而不是基类.
假设我有一个RAII风格的C++类:
class StateSaver
{
public:
StateSaver(int i) { saveState(); }
~StateSaver() { restoreState(); }
};
Run Code Online (Sandbox Code Playgroud)
...在我的代码中使用如下:
void Manipulate()
{
StateSaver save(1);
// ...do stuff that modifies state
}
Run Code Online (Sandbox Code Playgroud)
......目标是进入一些状态,做一些事情,然后离开那个范围时离开那个状态.有没有办法让这个拼写错误不编译(或警告,或以某种方式抱怨,以便可以注意到错误)?
void Manipulate()
{
StateSaver(1); // ruh-roh, state saved and immediately restored!
// ...do stuff that modifies state
}
Run Code Online (Sandbox Code Playgroud)
我不知道C++本身有什么东西可以用来防止这种情况,但这并不意味着它不存在.如果C++中没有任何内容,则可以接受特定于编译器的扩展.我主要对gcc和msvc的任何目标感兴趣(有一天icc,其他编译器的想法欢迎,但不太可能有用)所以任何一个hacks都很有用(当然,抽象为适当的#ifdef'd宏定义) .
C++ 11 4.9浮动积分转换[conv.fpint]:
可以将浮点类型的prvalue转换为整数类型的prvalue.转换截断; 也就是说,丢弃小数部分.如果截断的值无法在目标类型中表示,则行为未定义.
如果值是-0.0,是否定义了行为?它归结为"截断值是否无法在目标类型中表示".零可以代表.可以负零吗?在这种情况下,两个零值是区分还是不区分?
我遇到了下一个问题:
在我们的数据库中,我们有带有id的对象,如4040956363970588323.我正在jQuery上编写一些客户端向导,用于与这些对象进行交互.客户端通过Ajax请求接收有关对象的基础数据,如:
$.ajax({
url: "/api/pages/",
type: "get",
dataType: "json",
data: {"id": site_id},
success: function(data){
if (data.success){
for (var pidx in data.pages){
console.log(data.pages[pidx].id);
var li = $('<li class="ui-widget-content"></li>');
var idf = $('<input type="hidden" id="pid" value="{0}"/>'.format(data.pages[pidx].id))
var urlf = $('<input type="hidden" id="purl" value="{0}"/>'.format(data.pages[pidx].url))
li.text(data.pages[pidx].title);
li.append(idf);
li.append(urlf);
$("#selectable_pages_assign").append(li);
}
pages_was = $("#selectable_pages_assign>li");
}
else
updateTips(data.message);
},
error: function(){
updateTips("Internal erro!");
}
})
Run Code Online (Sandbox Code Playgroud)
所以,正如你所看到的,我发送的数据就像JSON对象(一些服务器代码):
return HttpResponse(dumps({
"success": True,
"pages": [{"id": page.id, "title": page.title, "url": page.image} for page in …Run Code Online (Sandbox Code Playgroud) Intl.Collator使用和 启用选项对十进制数字进行排序numeric会错误地比较小数。
在某些浏览器上,比较“0.005”和“0.05”会返回“0”,因为数字相同。
不同浏览器中的结果:
// Returns 0
console.log(new Intl.Collator(undefined, { numeric: true}).compare(0.000005, 0.05))Run Code Online (Sandbox Code Playgroud)
谁能告诉我出了什么问题吗?
报告为 Firefox 中的错误:https://bugzilla.mozilla.org/show_bug.cgi ?id=1312388
通常,在全局命名空间中包含C++中的标准库头,在任何externs 之外,如下所示:
#include <stdint.h>
int main() { }
Run Code Online (Sandbox Code Playgroud)
但是如果在一个标准库头中包含标准库头,那么会发生什么?例如:
extern "C" {
#include <stdint.h>
}
int main() { }
Run Code Online (Sandbox Code Playgroud)
要么
extern "C++" {
#include <stdint.h>
}
int main() { }
Run Code Online (Sandbox Code Playgroud)
它是否指定了在任何一种情况下应该发生什么,或者它是实现定义的还是未定义的?
C++ 11 17.6.2.3p1说C++标准库头文件包含了东西extern "C++",但我的初步读物是这不适用于C头文件<stdint.h>.C++ 11 17.6.2.2p3表示标题只能在#include任何"外部声明"之外; 这个短语只出现在C++ 11中的这一个地方,所以我不确定它是否适用于此处.(我假设C99对此无话可说.)
(对于我的特殊情况,它不是使用C++ <c*>标准头文件的选项,所以我真的只需要知道旧版C头文件的语义.)
我在一些输入字段中有一个表单。对于输入字段之一,我使用了长度验证maxlength="20"。
这里的问题是JAWS用户不知道在输入字段中已达到最大长度,因为JAWS继续读取他们在键盘上按下的键。
有没有办法使它易于使用?
此致Zeeshan