我们正在从工作中从MooTools切换到jQuery.我有一个同事告诉我$在使用jQuery方法时永远不要用作前缀(如果我理解他的话).他说,相反,更合适或更安全的方式(我没有真正跟随他)就是使用jQuery..
因此$.plugin(),jQuery.plugin()应该使用,而不是,例如.
那为什么会这样?他用$/ 做出了什么区别jQuery?我应该忘记美元符号作为我的访问者吗?只在某些情况下?
我发现可以使用与下面示例中显示的名称相同的构造函数参数初始化成员变量.
#include <cstdio>
#include <vector>
class Blah {
std::vector<int> vec;
public:
Blah(std::vector<int> vec): vec(vec)
{}
void printVec() {
for(unsigned int i=0; i<vec.size(); i++)
printf("%i ", vec.at(i));
printf("\n");
}
};
int main() {
std::vector<int> myVector(3);
myVector.at(0) = 1;
myVector.at(1) = 2;
myVector.at(2) = 3;
Blah blah(myVector);
blah.printVec();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
带有参数的g ++ 4.4 -Wall -Wextra -pedantic没有提供任何警告并且工作正常.它也适用于clang ++.我想知道C++标准对此有何看法?是否合法并保证始终有效?
由于范围问题,我对此感到疑惑.例如,考虑代码
typedef struct {
int x1;/*top*/
int x2;/*bottom*/
int id;
} subline_t;
subline_t subline(int x1, int x2, int id) {
subline_t t = { x1, x2, id };
return t;
}
int main(){
subline_t line = subline(0,0,0); //is line garbage or isn't it? the reference
//to subline_t t goes out of scope, so the only way this wouldn't be garbage
//is if return copies
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,返回语句是否总是复制?在这种情况下,它似乎工作,所以我被引导相信返回确实复制.如果它复制了,它会在每种情况下复制吗?
我正在使用canvas及其ImageData对象,它包含大量数据(数百万个整数).因此,使用几个阵列已占用大量内存(最多300MB).有没有办法在没必要时释放某些阵列的内存?我正在尝试分配undefined给该变量.这样对吗?
从C++ 14开始,感谢n3781(它本身没有回答这个问题),我们可能会编写如下代码:
const int x = 1'234; // one thousand two hundred and thirty four
Run Code Online (Sandbox Code Playgroud)
目的是改进这样的代码:
const int y = 100000000;
Run Code Online (Sandbox Code Playgroud)
并使其更具可读性.
下划线(_)字符已经由用户定义的文本采取了C++ 11,和逗号(,)的本地化问题-许多欧洲国家令人困惑†以此作为小数点分隔符-与逗号运算符的冲突,虽然我做的想知道什么样的现实世界的代码可能会被允许,例如1,234,567.
无论如何,更好的解决方案似乎是空间特征:
const int z = 1 000 000;
Run Code Online (Sandbox Code Playgroud)
这些相邻的数字文字标记可以由预处理器连接,就像字符串文字一样:
const char x[5] = "a" "bc" "d";
Run Code Online (Sandbox Code Playgroud)
相反,我们得到了撇号('),我没有被任何我认识为数字分隔符的书写系统使用.
是否有理由选择撇号而不是简单的空间?
†令人费解,因为所有这些语言都在文本中保留了一个逗号"分开"一个原本句子的概念,其句号用于"终止"句子 - 至少对我来说,这非常类似于逗号"分开"一个数字的整数部分和一个句号"终止"它为分数输入做好准备.
function singleDigit(num) {
let counter = 0
let number = [...num + ''].map(Number).reduce((x, y) => {return x * y})
if(number <= 9){
console.log(number)
}else{
console.log(number)
return singleDigit(number), counter += 1
}
}
singleDigit(39)Run Code Online (Sandbox Code Playgroud)
上面的代码采用一个整数,并通过将它乘以它自己的数字将它减少到一个数字。
示例为 39。
3 x 9 = 27.
2 x 7 = 14.
1 x 4 = 4.
Run Code Online (Sandbox Code Playgroud)
控制台将记录:
27
14
4
Run Code Online (Sandbox Code Playgroud)
如何跟踪递归函数被调用了 3 次?
我曾尝试添加计数器,但无法更新。将不胜感激任何帮助
当用户点击某个链接时,我想用确认对话框显示它们.如果他们点击"是",我想继续原始导航.一个问题:我的确认对话框是通过返回一个jQuery.Deferred对象实现的,该对象仅在用户单击Yes按钮时解析.所以基本上确认对话框是异步的.
所以基本上我想要这样的东西:
$('a.my-link').click(function(e) {
e.preventDefault(); e.stopPropogation();
MyApp.confirm("Are you sure you want to navigate away?")
.done(function() {
//continue propogation of e
})
})
Run Code Online (Sandbox Code Playgroud)
当然,我可以设置一个标志并重新触发点击,但这很麻烦.这样做的任何自然方式?
如何捕获按键,例如Ctrl + Z,而不在JavaScript中的页面上放置输入元素?似乎在IE中,keypress和keyup事件只能绑定到输入元素(输入框,textareas等)
我的复制操作符的源代码编写如下.
foo = rhs.foo;
foobar = rhs.foobar;
bar = rhs.bar;
toto = rhs.toto;
Run Code Online (Sandbox Code Playgroud)
我想按照以下方式排列(更具人性化,不是吗?).
foo = rhs.foo;
foobar = rhs.foobar;
bar = rhs.bar;
toto = rhs.toto;
Run Code Online (Sandbox Code Playgroud)
是否有一个VIM魔术插入到列N,或类似的东西,这将允许我使用每行几次击键排队?
采取以下标准段落:
[C++11: 5.3.3/6]:结果sizeof和sizeof...是类型的常量std::size_t.[注意:std::size_t在标准标题<cstddef>(18.2)中定义. - 尾注]
现在:
[C++11: 18.2/6]:该类型size_t是一个实现定义的无符号整数类型,其大小足以包含任何对象的字节大小.
当然,该段落并不要求这size_t是一个定义的类型别名typedef,但由于它明确声明可以通过标准标题提供<cstddef>,我认为我们可以认为如果没有包含它<cstddef>应该删除任何size_t可用的保证.一个程序.
但是,根据第一个引用,我们可以无论如何获得类型的表达式std::size_t.
int main()
{
typedef decltype(sizeof(0)) my_size_t;
my_size_t x = 0; // OK
std::size_t y = 1; // error: 'size_t' is not a member of 'std'
}
Run Code Online (Sandbox Code Playgroud)
std::size_t该程序不可见,但sizeof(0)仍然给我们一个?真?
因此,说它5.3.3/6是有缺陷的,并且它实际上具有"与std::size_t解决的任何类型相同的类型",而不是 std::size_t它本身,这是不正确的吗?
当然,如果 …