直到今天,我还以为:
i += j;
Run Code Online (Sandbox Code Playgroud)
只是一个捷径:
i = i + j;
Run Code Online (Sandbox Code Playgroud)
但是如果我们试试这个:
int i = 5;
long j = 8;
Run Code Online (Sandbox Code Playgroud)
然后i = i + j;将不会编译但i += j;将编译正常.
这是否意味着事实上i += j;是这样的捷径
i = (type of i) (i + j)?
java casting operators variable-assignment assignment-operator
我有一个名为test.sh的脚本:
#!/bin/bash
STR = "Hello World"
echo $STR
Run Code Online (Sandbox Code Playgroud)
我跑的时候sh test.sh得到这个:
test.sh: line 2: STR: command not found
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我在网上看一下非常基础/初学者的bash脚本教程,这就是他们说声明变量的方式......所以我不确定我做错了什么.
我在Ubuntu Server 9.10上.是的,bash位于/bin/bash.
我有以下代码:
public class Tests {
public static void main(String[] args) throws Exception {
int x = 0;
while(x<3) {
x = x++;
System.out.println(x);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们知道他应该只是写x++或者x=x+1,但是x = x++它首先要归于x自身,然后再增加它.为什么x继续0作为价值?
--update
这是字节码:
public class Tests extends java.lang.Object{
public Tests();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]) throws java.lang.Exception;
Code:
0: iconst_0
1: istore_1
2: iload_1
3: iconst_3
4: if_icmpge 22
7: iload_1 …Run Code Online (Sandbox Code Playgroud) 例如,如果我想从中读取中间值magic(5),我可以这样做:
M = magic(5);
value = M(3,3);
Run Code Online (Sandbox Code Playgroud)
得到value == 13.我希望能够做到这样的事情之一:
value = magic(5)(3,3);
value = (magic(5))(3,3);
Run Code Online (Sandbox Code Playgroud)
免除中间变量.然而,MATLAB抱怨Unbalanced or unexpected parenthesis or bracket在第一个括号之前3.
是否可以在不首先将其分配给变量的情况下从数组/矩阵中读取值?
给出这段JavaScript代码......
var a;
var b = null;
var c = undefined;
var d = 4;
var e = 'five';
var f = a || b || c || d || e;
alert(f); // 4
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下这种技术的用途(我最好的猜测是在这个问题的标题中!)?它是如何/为什么它正常工作?
我的理解是变量f将被赋予第一个变量的最近值(从左到右),该变量的值不是null或未定义,但是我没有设法找到关于这种技术的很多参考资料并且有看到它用了很多.
此外,这种技术是否特定于JavaScript?我知道在PHP中做类似的事情会导致产生f一个真正的布尔值,而不是d它自身的值.
我需要使用MS批处理文件将程序的输出分配给变量.
所以在GNU Bash shell我会用VAR=$(application arg0 arg1).我在Windows中使用批处理文件需要类似的行为.
有点像set VAR=application arg0 arg1.
是否可以在Python中声明变量,如此?:
var
Run Code Online (Sandbox Code Playgroud)
所以它初始化为None?似乎Python允许这样做,但是一旦你访问它,它就会崩溃.这可能吗?如果没有,为什么?
编辑:我想这样做的情况:
value
for index in sequence:
if value == None and conditionMet:
value = index
break
Run Code Online (Sandbox Code Playgroud)
我想知道如何在jinja中使用另一个变量设置变量.我会解释,我有一个子菜单,我想显示哪个链接是活动的.我试过这个:
{% set active_link = {{recordtype}} -%}
Run Code Online (Sandbox Code Playgroud)
其中recordtype是为我的模板指定的变量.
仍然试图进入R逻辑...解压缩(在LHS上)返回多个值的函数的结果的"最佳"方法是什么?
我显然不能这样做:
R> functionReturningTwoValues <- function() { return(c(1, 2)) }
R> functionReturningTwoValues()
[1] 1 2
R> a, b <- functionReturningTwoValues()
Error: unexpected ',' in "a,"
R> c(a, b) <- functionReturningTwoValues()
Error in c(a, b) <- functionReturningTwoValues() : object 'a' not found
Run Code Online (Sandbox Code Playgroud)
我真的必须做以下事吗?
R> r <- functionReturningTwoValues()
R> a <- r[1]; b <- r[2]
Run Code Online (Sandbox Code Playgroud)
或者R程序员会写更像这样的东西:
R> functionReturningTwoValues <- function() {return(list(first=1, second=2))}
R> r <- functionReturningTwoValues()
R> r$first
[1] 1
R> r$second
[1] 2
Run Code Online (Sandbox Code Playgroud)
---编辑回答谢恩的问题---
我真的不需要给结果值部分命名.我申请一个聚合函数的第一个组件和其他到第二组件(min和max,如果它是我不需要分裂他们两个组件功能相同).
请考虑以下示例:
class Quirky {
public static void main(String[] args) {
int x = 1;
int y = 3;
System.out.println(x == (x = y)); // false
x = 1; // reset
System.out.println((x = y) == x); // true
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定Java语言规范中是否有一个项目要求加载变量的先前值以与右侧(x = y)进行比较,右侧()按括号隐含的顺序首先计算.
为什么第一个表达式评估false,但第二个表达式评估为true?我本来期望(x = y)先评估,然后它会x与自己(3)进行比较并返回true.
这个问题与Java表达式中子表达式的评估顺序不同,这x绝对不是这里的"子表达式".需要加载它以进行比较而不是"评估".这个问题是特定于Java的,而且这个表达式x == (x = y)不同于通常为棘手的面试问题精心设计的不切实际的结构,而是来自一个真实的项目.它应该是比较和替换成语的单行替代品
int oldX = x;
x = y;
return …Run Code Online (Sandbox Code Playgroud)