标签: variable-assignment

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

JavaScript中的`x = y,z`逗号分配

可能重复:
Javascript语法:逗号是什么意思?

我在阅读本文时遇到了代码(执行Ctrl+ F搜索Andre Breton):

//function returning array of `umbrella` fibonacci numbers
function Colette(umbrella) {
  var staircase = 0, galleons = 0, brigantines = 1, armada = [galleons, brigantines], bassoon;
  Array.prototype.embrace = [].push;

  while(2 + staircase++ < umbrella) {
    bassoon = galleons + brigantines;
    armada.embrace(brigantines = (galleons = brigantines, bassoon));
  }

  return armada;
}
Run Code Online (Sandbox Code Playgroud)

什么是x = (y = x, z)结构是什么意思?或者更具体地说,是什么y = x, z意思?我称之为逗号分配,因为它看起来像赋值并且有逗号.

在Python中,它意味着元组解包(或在这种情况下打包).这是同样的情况吗?

javascript variable-assignment assignment-operator assign iterable-unpacking

21
推荐指数
3
解决办法
7635
查看次数

为什么C++允许将整数分配给字符串?

今天我在一个程序中遇到了一个有趣的情况,我无意中将一个无符号整数分配给了一个std :: string.VisualStudio C++编译器没有给出任何关于它的警告或错误,但我碰巧在运行项目时发现了错误,它给了我字符串的垃圾字符.

这就是代码的样子:

std::string my_string("");
unsigned int my_number = 1234;
my_string = my_number;
Run Code Online (Sandbox Code Playgroud)

以下代码也编译好:

std::string my_string("");
unsigned int my_number = 1234;
my_string.operator=(my_number);
Run Code Online (Sandbox Code Playgroud)

以下结果导致错误:

unsigned int my_number = 1234;
std::string my_string(my_number);
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?为什么编译器会使用最后一个代码块停止构建,但是让前两个代码块构建?

c++ string stl variable-assignment

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

Freemarker将列表长度分配给局部变量

以下freemarker代码会导致异常

<#assign i= it.getList().size()>
<#list it.getList() as elem>
    <#if i==1>
    <li>${elem.name}</li>
    <#else>
    <li class="marked">${elem.name}</li>
    </#if>
    <#assign i = i-1>
</#list>
Run Code Online (Sandbox Code Playgroud)

抛出以下异常:

期待哈希.it.getList()被评估为freemarker.template.SimpleSequence

谁知道为什么?如何将列表的长度分配给我的变量i

freemarker exception variable-assignment

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

为什么java中不允许赋值为'this'?

我从编译器得到的错误是"赋值的左侧必须是变量".我的用例是深度复制,但并不真正相关.

在C++中,可以分配给*this.

问题不在于如何规避任务this.这很简单,但是决定不做this变量的背后有什么理由.

原因是技术性的还是概念性的?

我的猜测到目前为止 - 在随机方法中重建Object的可能性容易出错(概念性),但技术上可行.

编辑请限制"因为Java规范如此说"的变化.我想知道决定原因

java reference this variable-assignment

20
推荐指数
3
解决办法
9805
查看次数

Java运算符:| =按位OR并指定示例

我只是通过有人编写的代码,我看到了|=用法,查看Java运算符,它建议按位或分配操作,任何人都可以解释并给我一个例子吗?

这是读取它的代码:

    for (String search : textSearch.getValue())
         matches |= field.contains(search);
Run Code Online (Sandbox Code Playgroud)

java bit-manipulation operators variable-assignment

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

为什么我不能在方法之外做任务?

如果我尝试为类中的变量赋值,但在方法之外我会收到错误.

class one{
 Integer b;
 b=Integer.valueOf(2);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我在创建过程中初始化它,它就可以工作.

class one{
 Integer b=Integer.valueOf(2);
}
Run Code Online (Sandbox Code Playgroud)

在方法内部,它适用于两种情况.

java variables variable-assignment

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

Python在while循环中的条件期间为变量赋值

关于Python语法的一个简单问题.我想在while循环的条件期间将函数的值赋给变量.当函数返回的值为false时,循环应该中断.我知道如何在PHP中完成它.

while (($data = fgetcsv($fh, 1000, ",")) !== FALSE) 
Run Code Online (Sandbox Code Playgroud)

但是,当我在Python中尝试类似的语法时,我得到一个语法错误.

python variable-assignment while-loop

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

一行上的多个分配未按预期工作

我正在尝试交换两个ints - x并且y在示例中,并且在没有库函数的情况下在一行中执行.

所以我从这开始:

int x = 4;
int y = 3;

System.out.println(x);
System.out.println(y);

x ^= y;

System.out.println(x);
System.out.println(y);

y ^= x;

System.out.println(x);
System.out.println(y);

x ^= y;

System.out.println(x);
System.out.println(y);
Run Code Online (Sandbox Code Playgroud)

输出4, 3, 7, 3, 7, 4, 3, 4与预期一致.到目前为止都很好.

接下来是这样的:

int x = 4;
int y = 3;

System.out.println(x);
System.out.println(y);

y ^= (x ^= y);

System.out.println(x);
System.out.println(y);

x ^= y;

System.out.println(x);
System.out.println(y);
Run Code Online (Sandbox Code Playgroud)

产量4, 3, 7, 4, 3, 4再次如预期.到目前为止仍然很好.

最后这个:

int x = 4; …
Run Code Online (Sandbox Code Playgroud)

java variables xor variable-assignment bitwise-operators

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

为什么通过切片分配超出列表末尾不会引发IndexError?

我正在研究稀疏列表实现,最近通过切片实现了赋值.这让我发现Python的内置list实现中的一些行为让我感到惊讶.

给定一个空的list和通过切片的赋值:

>>> l = []
>>> l[100:] = ['foo']
Run Code Online (Sandbox Code Playgroud)

我本来期望IndexErrorlist这里开始,因为实现它的方式意味着无法从指定的索引中检索项目::

>>> l[100]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

'foo' 甚至无法从指定的切片检索:

>>> l = []
>>> l[100:] = ['foo']
>>> l[100:]
[]
Run Code Online (Sandbox Code Playgroud)

l[100:] = ['foo'] 附加list(也就是说,l == ['foo']在此作业之后)并且看起来自BDFL的初始版本以来就表现出这种方式.我无法在任何地方找到此功能(*),但CPython和PyPy都以这种方式运行.

按索引分配会引发错误:

>>> l[100] = 'bar'
Traceback (most recent call last):
  File "<stdin>", …
Run Code Online (Sandbox Code Playgroud)

python list variable-assignment slice

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