标签: variable-assignment

C#:这个字段分配安全吗?

在这个片段中:

class ClassWithConstants
{
    private const string ConstantA = "Something";
    private const string ConstantB = ConstantA + "Else";

    ...

}
Run Code Online (Sandbox Code Playgroud)

是否有结束的风险ConstantB == "Else"?或者这些分配是否线性发生?

c# field constants variable-assignment

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

分配给命名组的Python正则表达式

当你在python正则表达式中使用变量(是正确的单词吗?)时:"blah(?P\w +)"("value"将是变量),你怎么能让变量的值成为"之后的文本" blah"到行尾或某个字符没有注意变量的实际内容.例如,这是我想要的伪代码:

>>> import re
>>> p = re.compile("say (?P<value>continue_until_text_after_assignment_is_recognized) endsay")
>>> m = p.match("say Hello hi yo endsay")
>>> m.group('value')
'Hello hi yo'
Run Code Online (Sandbox Code Playgroud)

注意:标题可能不易理解.那是因为我不知道怎么说.对不起,如果我引起任何混淆.

python regex variables variable-assignment

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

C++任务 - 时尚还是性能?

在编写Java代码多年之后,当我看到这个C++语句时,我感到很惊讶:

int a,b;
int c = (a=1, b=a+2, b*3);
Run Code Online (Sandbox Code Playgroud)

我的问题是:这是编码风格的选择,还是有真正的好处?(我正在寻找一个实用的用例)

我认为编译器会看到它与以下内容相同:

int a=1, b=a+2;
int c = b*3;
Run Code Online (Sandbox Code Playgroud)

(这是什么官方名称?我认为它是标准的C/C++语法.)

c variable-assignment

11
推荐指数
3
解决办法
854
查看次数

为什么赋值运算符调用构造函数?

我只是在玩弄了解智能指针并尝试制作我的但我遇到的情况我并不完全理解.这是代码:

#include <iostream>
template <class T>
class Holder
{
private:
        T * obj;
public:
        Holder(T * tt) : obj(tt) 
        {
                std::cout << "ctor : " << tt->dummy << std::endl;
        }
        T * operator -> ()
        {
                return obj;
        }
        operator bool()
        {
                return obj;
        }
        T * const get() const
        {
                return obj;
        }
        void reset() {swap(0);}
        void swap(T * other)
        {
                obj = other;
        }
        Holder & operator = (const Holder& holder)
        {
                obj = holder.get();
                return *this;
        } …
Run Code Online (Sandbox Code Playgroud)

c++ constructor smart-pointers variable-assignment

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

结构的Matlab数组:快速赋值

有没有办法"vector"分配一个struct数组.

目前我可以

edges(1000000) = struct('weight',1.0); //This really does not assign the value, I checked on 2009A.
for i=1:1000000; edges(i).weight=1.0; end; 
Run Code Online (Sandbox Code Playgroud)

但这很慢,我想做更多的事情

edges(:).weight=[rand(1000000,1)]; //with or without the square brackets. 
Run Code Online (Sandbox Code Playgroud)

任何想法/建议来矢量化这个任务,以便它会更快.

提前致谢.

arrays matlab struct vectorization variable-assignment

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

Javascript - 使用变量声明中的花括号将多个变量分配给对象属性

在查看Mozilla(Firefox)附加SDK的一些Javascript代码时,我看到了一些我之前从未见过的变量声明:

var { foo, bar } = someFunction("whatever");  // just an example
Run Code Online (Sandbox Code Playgroud)

查看变量名称周围的花括号?事实证明,这是一种将对象的属性值一次性分配给多个变量的方法.它看起来类似于解构赋值或PHP list,除了使用对象属性而不是数组.

我实际上通过一些小小的问题找到了这个,因为似乎没有关于它的文档.看看这段代码:

function gimmeAnObject() {
    return {
        foo: "hey",
        bar: "sup"
    };
}

console.log(gimmeAnObject()); // Object { foo="hey", bar="sup" }

var { foo, bar } = gimmeAnObject();

console.log(foo); // hey
console.log(bar); // sup
Run Code Online (Sandbox Code Playgroud)

我还发现这只适用于Firefox.Chrome会抛出错误:" Uncaught SyntaxError:Unexpected token { ".这就解释了为什么在我开始查看Firefox附加代码之前我没有看到它.

有没有其他人见过这种变量声明?为什么我找不到任何文件?因为它只适用于Firefox,我认为它可能是一个Mozilla的东西,但我甚至在MDN上找不到任何关于它的东西.然后,也许我只是不知道要搜索什么.

javascript syntax firefox mozilla variable-assignment

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

Python中的同时赋值语义

请考虑以下Python 3代码:

a = [-1,-1,-1]
i = 0
Run Code Online (Sandbox Code Playgroud)

现在考虑以下两个版本同时分配a和i:

作业版本1:

a[i],i = i,i+1
Run Code Online (Sandbox Code Playgroud)

作业版本2:

i,a[i] = i+1,i
Run Code Online (Sandbox Code Playgroud)

我希望这两个版本的同步赋值在语义上是等价的.但是,如果在每个同时分配后检查a和i的值,则会得到不同的状态:

print(a,i)分配版本1后的输出:

[0, -1, -1] 1
Run Code Online (Sandbox Code Playgroud)

print(a,i)分配版本2后的输出:

[-1, 0, -1] 1
Run Code Online (Sandbox Code Playgroud)

我不是Python的语义专家,但这种行为似乎很奇怪.我希望这两个赋值都表现为赋值版本1.此外,如果您检查以下链接,则可以预期两个赋值版本将导致相同的状态:

链接到Google图书中的书摘

对于同时分配的Python语义,我是否缺少一些东西?

注意:这种奇怪的行为似乎不可重现,例如,当变量a具有整数类型时; 它似乎需要a是类型列表(也许这是任何可变类型的情况?).

python simultaneous variable-assignment semantics

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

在C++ 11中的一个表达式中双重赋值相同的变量

C++ 11标准(5.17,expr.ass)表明了这一点

在所有情况下,在右和左操作数的值计算之后,以及在赋值表达式的值计算之前,对赋值进行排序.对于不确定序列的函数调用,复合赋值的操作是单个评估

据我了解,作为给定赋值的一部分的所有表达式将在赋值本身之前进行求值.即使我在同一个赋值中修改了两次相同的变量,这条规则也应该有效,我相当肯定,之前是未定义的行为.

请问代码:

int a = 0;
a = (a+=1) = 10;

if ( a == 10 ) {
    printf("this is defined");
} else {
    printf("undefined"); 
}
Run Code Online (Sandbox Code Playgroud)

总是评价到a==10

c++ variable-assignment expression-evaluation operator-precedence c++11

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

在Twig中的父作用域中设置变量

在Smarty你可以做到

{$var = 'bla' scope=parent}
Run Code Online (Sandbox Code Playgroud)

在Twig有可能吗?

不建议使用块.我知道.我需要变量.

variables templates scope variable-assignment twig

11
推荐指数
4
解决办法
2万
查看次数

为什么std :: unique_ptr重置与赋值不一样?

我想知道为什么

std::unique_ptr<MyClass> p = new MyClass; 
Run Code Online (Sandbox Code Playgroud)

不起作用,但是

std::unique_ptr<MyClass> p;
p.reset(new MyClass);
Run Code Online (Sandbox Code Playgroud)

很好.我有点理解他们是如何不同的,但我想知道为什么做出选择使他们与众不同.分配与重置不一样的危险是什么?

c++ initialization variable-assignment unique-ptr c++11

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