标签: multiple-assignment

多项任务混淆

我知道赋值运算符是右关联的.

所以例如 x = y = z = 2相当于(x = (y = (z = 2)))

既然如此,我尝试了以下方法:

foo.x = foo = {a:1}
Run Code Online (Sandbox Code Playgroud)

我期望foo使用value创建对象{a:1},然后x将创建属性,该属性foo将只是foo对象的引用.

(实际上,如果我要将多个赋值语句分成两个单独的语句,会发生什么foo = {a:1};foo.x = foo;)

结果实际上是:

ReferenceError:未定义foo(...)

那么我尝试了以下内容:

var foo = {};
foo.x = foo = {a:1};
Run Code Online (Sandbox Code Playgroud)

现在我不再得到例外但是foo.x未定义!

为什么作业不按我的预期工作?


免责声明:"重复"问题似乎与我提出的问题非常不同,因为问题在于赋值中创建的变量是全局的,与使用var关键字创建的变量相关联.这不是问题所在.

javascript operator-precedence associativity multiple-assignment

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

Python3多重赋值和内存地址

看完这个这个,这是非常相似,我的问题,我仍然无法理解以下行为:

a = 257
b = 257
print(a is b) #False
a, b = 257, 257
print(a is b) #True
Run Code Online (Sandbox Code Playgroud)

打印时id(a),id(b)我可以看到在单独的行中分配值的变量具有不同的ID,而对于多个赋值,两个值具有相同的id:

a = 257
b = 257
print(id(a)) #139828809414512
print(id(b)) #139828809414224
a, b = 257, 257
print(id(a)) #139828809414416
print(id(b)) #139828809414416
Run Code Online (Sandbox Code Playgroud)

但是,通过说多个相同值的赋值总是创建指向同一个id的指针,从而解释这种行为是不可能的:

a, b = -1000, -1000  
print(id(a)) #139828809414448
print(id(b)) #139828809414288
Run Code Online (Sandbox Code Playgroud)

是否有一个明确的规则,它解释了变量何时变得相同id而不是?

编辑

相关信息:此问题中的代码以交互模式运行(ipython3)

python python-3.x multiple-assignment

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

PowerShell 的特殊数组头/尾分配记录在哪里?

我刚刚注意到这是有效的 PowerShell 代码:

PS> $first, $rest = @(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

该语句将数组中的第一项放入 中$first,将其余项目放入 中$rest

PS> $first
1

PS> $rest
2
3
Run Code Online (Sandbox Code Playgroud)

它甚至适用于任意数量的变量,将当前头部推入下一个变量,将尾部推入最后一个变量。你可以自己尝试一下。

PS> $first, $second, $rest = @(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

$null如果没有足够的头或尾可以放入其中一个变量,它似乎会分配一个值。即使在这种情况下$rest(我宁愿看到一个空数组,但无论如何)。

PS> $first, $second, $rest = @(1)

PS> $first
1

PS> $second

PS> $second -eq $null
True

PS> $rest

PS> $rest -eq $null
True

PS> $rest -eq @()
False
Run Code Online (Sandbox Code Playgroud)

问题,也是我的问题,是我没有在任何地方看到这个记录!我正在尝试找出何时支持此功能。具体是如何实施的。如果它适用于任何其他类型。

我检查了about_Assignmentabout_Arrays、 、about_Splatting,但没有任何运气。

arrays powershell variable-assignment assignment-operator multiple-assignment

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

如何在JavaScript中一次分配多个变量?

有没有办法在JavaScript中执行多个赋值,如下所示:

var a, b = "one", "two";
Run Code Online (Sandbox Code Playgroud)

这相当于:

var a = "one";
var b = "two";
Run Code Online (Sandbox Code Playgroud)

javascript multiple-assignment

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

R 中的多重赋值?

在Python中你可以做这样的事情:

x,y = 1,2 
Run Code Online (Sandbox Code Playgroud)

或者

x,y = function_that_returns_two_elements()
Run Code Online (Sandbox Code Playgroud)

我试图在 R 中做类似的事情,但没有找到解决方案。是否可以?

r multiple-assignment

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

带有两个等号的 C++ 命令如何工作?

我在我使用的程序中找到了一些代码:

PWSTR myWchar = NULL;
WCHAR *p = myWchar = new WCHAR[4];
Run Code Online (Sandbox Code Playgroud)

我如何读取带有两个等号的行?

它是如何计算的?

A:

 myWchar  = new WCHAR[4];
 WCHAR *p = myWchar 
Run Code Online (Sandbox Code Playgroud)

或乙:

 WCHAR *p = myWchar ;
 myWchar  = new WCHAR[4];
Run Code Online (Sandbox Code Playgroud)

c++ operator-precedence assign multiple-assignment

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