标签: local-variables

获取局部变量

当从已部署的应用程序获取堆栈跟踪作为错误报告时,获取实际变量值以在抛出异常之前重建系统状态会很有帮助。

在 Java 中这样的事情是否可行?如何做到这一点?

干杯,马克斯

java debugging local-variables stack-trace

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

如何在没有扩展内联asm的情况下在gcc内联汇编中声明和初始化局部变量?

我知道这是一个非常基本的问题,但我真的很困惑.事实上,我绝对是gcc语法的新手.我希望在不使用扩展内联汇编的情况下拥有局部变量(事实上堆栈地址带有标签); 类似于intel语法中的代码:

DATA1 DB 100

MOV AL,DATA1

这是我猜可能在gcc中替代的代码:

- (int)someFunction:(int)x {

DATA1  DB  100 
MOV AL, DATA1
Run Code Online (Sandbox Code Playgroud)

但是这段代码导致了这个错误:

找不到架构x86_64的符号

我可以在x86中使用全局变量,但x64或x86_x64中的结果相同.

设置:LLVM 4.1; Xcode中使用的Cocoa 4

什么是正确的语法?

gcc scope local-variables inline-assembly

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

(python)我的变量应该是本地的还是全局的?(最佳实践)

当声明一个仅使用一个函数的常量时,该变量是否应该在本地声明,因为它仅由该函数使用,或全局声明,因为它永远不会改变?

IE更好:

CONSTANT = (1, 3, 5, 8)

##SOME OTHER CODE HERE

def function1(arg):
    if arg in CONSTANT:
        do something
Run Code Online (Sandbox Code Playgroud)

要么:

def function1(arg):
    CONSTANT = (1, 3, 5, 8)
    if arg in CONSTANT:
        do something
Run Code Online (Sandbox Code Playgroud)

我知道这两者之间并没有太大区别,但我只是想知道这两种做法中哪一种是首选的,因为我刚开始并希望养成良好的习惯.

python variables coding-style global-variables local-variables

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

使用集合初始化程序时,另一个线程可以看到部分创建的集

想象一下这个C#代码在某种方法中:

SomeClass.SomeGlobalStaticDictionary = new Dictionary<int, string>()
{
    {0, "value"},
};
Run Code Online (Sandbox Code Playgroud)

假设没有人使用任何显式内存屏障或锁定来访问字典.

如果没有进行优化,则全局字典应为null(初始值)或具有一个条目的正确构造的字典.

问题是:可以重新排序Add调用和分配给SomeGlobalStaticDictionary的效果,以便其他一些线程看到一个空的非null SomeGlobalStaticDictionary(或任何其他无效的部分构造的字典?)

如果SomeGlobalStaticDictionary是易变的,答案会改变吗?

在阅读http://msdn.microsoft.com/en-us/magazine/jj863136.aspx(以及它的第二部分)之后,我从理论上了解到,因为在源代码中分配了一个变量,其他线程可能会因为很多原因.我查看了IL代码,但问题是JIT编译器和/或CPU是否允许在分配SomGlobalStaticDictionary之前不"刷新"Add调用对其他线程的影响.

c# local-variables thread-safety collection-initializer

5
推荐指数
2
解决办法
273
查看次数

Scala的本地惰性变量是如何实现的?

如果它们是类变量,那么有一个问题询问lazy vals 的实现.如何实现局部变量,例如

def foo[A](a: => A) = {
  lazy val x: A = a
  // return something that uses x
}
Run Code Online (Sandbox Code Playgroud)

scala local-variables lazy-evaluation scala-2.10

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

局部变量线程安全吗?

我有一个类似下面的类:

class Program
    {
        static void Main(string[] args)
        {
            var outputWindow = new OutputWindow();

            var threads = new List<Thread>();

            Action action = () => outputWindow.Display(20);

            for (int i = 0; i < 10; i++)
            {
                var thread = new Thread(() => action()) {Name = "Thread " + i};
                threads.Add(thread);
            }

            foreach (var thread in threads)
            {
                thread.Start();
            }
        }
    }

    public class OutputWindow
    {
        public void Display(int x)
        {
            for (int i = 0; i < x; i++)
            {
                Console.WriteLine(Thread.CurrentThread.Name …
Run Code Online (Sandbox Code Playgroud)

c# multithreading local-variables

5
推荐指数
2
解决办法
4642
查看次数

如何引用与C++中的局部变量同名的全局变量?

如果存在全局变量并且函数具有相同名称的参数,并且期望的结果是本地变量和全局变量的总和,那么在这种特定情况下我们如何引用全局函数?我知道这样做并不好.但只是为了好奇而要求.

int foo = 100;

int bar(int foo)
{
    int sum=foo+foo; // sum adds local variable and a global variable
    return sum;
}

int main()
{
    int result = bar(12);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ scope global-variables local-variables parameter-passing

5
推荐指数
2
解决办法
5685
查看次数

使用局部变量(而不是重复的属性访问)是否会损害性能?

我一直在寻找一些旨在在性能敏感的环境中运行的JavaScript代码,主要是移动环境中的游戏引擎.

在许多情况下,此代码不使用局部变量,而是更喜欢使用显式链,例如

if (this.x.y[z].i) {
    this.x.y[z].a += this.x.y[z].b;
}
Run Code Online (Sandbox Code Playgroud)

其中两个this.x.ythis.x.y.z表示"复制" - ,并且其中没有中间特性的具有吸气剂,并且其中q不是在其他地方使用的局部变量-可被处理语义上等同于以下内容.

var q = this.x.y[z]
if (q.i) {
    q.a += q.b;
}
Run Code Online (Sandbox Code Playgroud)

(这些名字一直模糊不清,特别是试图减轻偏见;这个问题并不是关于要采用哪种"模式" - 虽然我更喜欢后者,并打算100%使用它,因此我在问这个问题.)

现在,在我收到大量关于"为清晰度编写代码"和"不要过早优化"的评论之前,请继续阅读!

因此,给出以下断言/公理并注意到这个问题不是关于如何提高性能,而是如果使用本地缓存/"别名"变量会降低相关JavaScript实现的性能:

  • 引入局部变量,当多次访问成员时,将导致更清晰的代码.(这是主观的,但为了这个问题,这是一个公理.)
  • 如图所示,对于非动态属性使用局部变量将始终具有相同的语义.
  • 在局部变量上没有创建闭包; 因此,不用担心增加对象生存期或以其他方式保持更大的执行上下文范围.
  • 专注于移动浏览器,包括非/低JIT品种 - 例如JavaScriptCore和/或V8之前的Android上的任何内容.
  • 浏览器已经针对这种情况进行了很好的优化,并且预计使用局部变量不会导致任何明显的"性能"增加 - 这个问题恰恰相反.

可以/将使用局部变量而不是 [多个]直接属性访问会导致性能下降吗?如果这种下降是"不可忽视的......"

javascript performance properties local-variables

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

不含参数的变量范围

例:

我有以下代码块:

if (!int.TryParse("123", out var parsedNumber))
{
    return;
}

Console.WriteLine(parsedNumber);
Run Code Online (Sandbox Code Playgroud)

控制台中的输出为:123

题:

生产线Console.WriteLine(parsedNumber);知道的可能性如何parsedNumber

根据我的理解,parsedNumber应该仅在中提供if-block,不是吗?

如果我尝试这样做:

foreach (var data in dataList)
{
   data += "something";
}

Console.WriteLine(data);
Run Code Online (Sandbox Code Playgroud)

Console.WriteLine(data);找不到data


我认为解决方案是out参数,但是我不确定。有人可以解释吗?

c# scope local-variables

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

Ruby方法里面的数组操作

在下面,input_1更改:

def method_1(a)
  a << "new value"
end

input_1 = []
method_1(input_1)
input_1 #=> ["new value"]
Run Code Online (Sandbox Code Playgroud)

在下面,input_2不会改变:

def method_2(a)
  a = ["new value"]
end

input_2 = []
method_2(input_2)
input_2 #=> []
Run Code Online (Sandbox Code Playgroud)

为什么input_1改变input_2而不改变?

ruby local-variables

5
推荐指数
2
解决办法
88
查看次数