标签: variable-assignment

使用空赋值修复"使用未分配的局部变量".为什么?

使用这样的一段代码,编译器抱怨c.MyProperty:

MyClass c;

try { throw new Exception(); }
catch (Exception) { }

c.MyProperty = 2; // "Use of unassigned local variable 'c'".
Run Code Online (Sandbox Code Playgroud)

然而,如果你指定一个不抱怨nullc在初始化:

MyClass c = null;

try { throw new Exception(); }
catch (Exception) { }

c.MyProperty = 2; // no complains this time.
Run Code Online (Sandbox Code Playgroud)

那么,为什么这有效呢?如果c未分配a null并且编译器假设允许它,则不会抛出相同的异常c.MyProperty,Object引用未设置为对象的实例

c# exception variable-assignment

32
推荐指数
1
解决办法
8万
查看次数

在python中使用"或"进行赋值

将值赋给像这样的变量是否被认为是不好的风格?

x = "foobar" or None
y = some_variable or None
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,x得到值'foobar'.

python coding-style variable-assignment

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

一行中的Python多个赋值语句

(别担心,这不是关于解包元组的另一个问题.)

在python中,语句foo = bar = baz = 5将变量foo,bar和baz赋值为5.它从左到右分配这些变量,这可以通过像nastier这样的例子来证明

>>> foo[0] = foo = [0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
>>> foo = foo[0] = [0]
>>> foo
[[...]]
>>> foo[0]
[[...]]
>>> foo is foo[0]
True
Run Code Online (Sandbox Code Playgroud)

python语言参考声明赋值语句具有该形式

(target_list "=")+ (expression_list | yield_expression)
Run Code Online (Sandbox Code Playgroud)

在分配时,expression_list首先评估,然后分配.

那么这条线怎么可能foo = bar = 5是有效的,因为它bar = 5不是一个expression_list?如何在一行上解析和评估这些多项任务?我读错了语言参考吗?

python variable-assignment

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

在scala中多次分配非元组

只是为了澄清,当我说多个分配,并行分配,解构绑定我的意思是以下模式匹配宝石

scala> val (x,y) = Tuple2("one",1)
x: java.lang.String = one
y: Int = 1
Run Code Online (Sandbox Code Playgroud)

其分配"one"x1y.

我试图做

val (x,y) = "a b".split()
Run Code Online (Sandbox Code Playgroud)

我期望scala会尝试将模式与模式进行模式匹配,如果数组的长度与模式的长度不匹配,则会抛出运行时异常.

我所有试图轻松转换Array为a的尝试Tuple2都是徒劳的.

scala> Tuple2(Array(1,2):_*)
<console>:7: error: wrong number of arguments for method apply: (T1,T2)(T1, T2)
in object Tuple2
       Tuple2(Array(1,2):_*)
       ^

scala> Tuple2(Array(1,2).toList:_*)
<console>:7: error: wrong number of arguments for method apply: (T1,T2)(T1, T2)
in object Tuple2
       Tuple2(Array(1,2).toList:_*)
Run Code Online (Sandbox Code Playgroud)

有没有任何巧妙的方法来使用数组或列表的多个赋值?

arrays functional-programming scala pattern-matching variable-assignment

31
推荐指数
3
解决办法
8647
查看次数

myView.frame.origin.x = value; 不起作用 - 但为什么?

我知道我不能用这个:

myView.frame.origin.x = 25.0;
Run Code Online (Sandbox Code Playgroud)

而我必须使用它:

CGRect myFrame = myView.frame;
myFrame.origin.x = 25.0;
myView.frame = myFrame;
Run Code Online (Sandbox Code Playgroud)

而且我一直这样做,但我不知道为什么我必须这样做.我想在我的理解中填补这个空白.谁能解释一下?

如今Xcode为您提供"表达式不可分配".前一段时间你得到一个编译错误"Lvalue需要作为赋值的左操作数".

struct objective-c variable-assignment declared-property

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

Clojurescript中的Javascript互操作分配

愚蠢的问题:如何在Clojurescript中进行Javascript分配?我正在使用Javascript lib并且需要设置对象字段的值obj.this=that;- 我不知道Javascript所以也许有.set方法?

javascript variable-assignment clojurescript

30
推荐指数
2
解决办法
6108
查看次数

通过=在R中禁用赋值

R允许通过<-和分配=.

虽然两个赋值运算符之间存在细微差别,但似乎存在广泛的共识,这<-是比较好的选择=,因为=它也被用作参数的运算符映射值,因此它的使用可能导致含糊不清的语句.以下举例说明:

> system.time(x <- rnorm(10))
   user  system elapsed 
      0       0       0 
> system.time(x = rnorm(10))
Error in system.time(x = rnorm(10)) : unused argument(s) (x = rnorm(10))
Run Code Online (Sandbox Code Playgroud)

实际上,Google样式代码不允许使用=作业(请参阅此答案的评论以获得相反的观点).

我也几乎专门<-用作赋值运算符.然而,几乎在前一句中是这个问题的原因.当=我在我的代码中充当赋值运算符时,它总是偶然的,如果它导致问题,通常很难发现.

我想知道是否有办法关闭赋值=,让R抛出错误任何时候=用于赋值.

最佳地,这种行为只会发生在全局环境中的代码中,因为附加的命名空间中的代码很可能=用于赋值而不应该中断.

(这个问题的灵感来自与Jonathan Nelson的讨论)

r variable-assignment

30
推荐指数
3
解决办法
1337
查看次数

c ++是否隐式复制构造函数复制数组成员变量?

可能重复:
如何在复制控制功能中处理C数组成员?

我想如果成员变量被声明为指针,隐式复制构造函数(由编译器生成)将复制指针.

我不确定数组成员变量会发生什么.

隐式复制构造函数是否正确复制数组成员?赋值运算符怎么样?

例如:

char mCharArray[100];
int mIntArray[100];   
Run Code Online (Sandbox Code Playgroud)

是否可以正确复制mCharArray mIntArray?

c++ constructor copy variable-assignment

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

表达式必须是可修改的L值

我在这里 char text[60];

然后我做了一个if:

if(number == 2)
  text = "awesome";
else
  text = "you fail";
Run Code Online (Sandbox Code Playgroud)

它总是说表达式必须是可修改的L值.

c char variable-assignment lvalue

29
推荐指数
1
解决办法
9万
查看次数

可以初始化但未分配的对象

我需要创建一个类,其对象可以初始化但不能分配.

我想也许我可以通过不定义赋值运算符来做到这一点,但编译器使用构造函数来进行赋值.

我需要它是这样的:

Object a=1;    // OK
a=1;           // Error
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

c++ initialization variable-assignment

29
推荐指数
5
解决办法
3114
查看次数