问题列表 - 第47283页

如何从闭包范围动态访问局部变量(通过其名称的字符串形式)?

在 Javascript 中,我习惯于通过使用[]操作符来“动态”访问已知命名空间中的变量(如果我在这里使用了错误的词,请纠正我)。例如(来自全局命名空间):

var a = 1;
window['a']; # => 1
Run Code Online (Sandbox Code Playgroud)

或者来自对象类型命名空间:

var a = { b: 1 };
a['b']; # => 1
Run Code Online (Sandbox Code Playgroud)

我熟悉如何this确定的基础知识:

var a = function(){ return this['c']; };
var b = { c: 1 };
a.apply(b); # => 1;
Run Code Online (Sandbox Code Playgroud)

但是在函数本身内,我如何访问我刚刚实例化(或重新定义)的局部变量var

即,我希望以下函数调用返回1调用a

function(){
  var a = 1;
  return a;
}
Run Code Online (Sandbox Code Playgroud)

你不能使用,window['a']因为a是在本地定义的,你不能使用,this['a']因为this根据调用函数的上下文而改变。

在现实环境中,我会简单地重构以避免动态创建和访问局部变量,因为这通常是一个坏主意,但作为一个学术问题,我很好奇是否可以a通过其字符串名称进行访问。

javascript closures

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

如何在没有清单的情况下启用视觉样式

我指的是这个答案如何在没有清单的情况下启用视觉样式

做那个回答说的创建一个.manifest并启用视觉样式。但是,我不希望清单与我的 .exe 绑定 - 我只提供我的可执行文件,并希望将所有内容捆绑在那里。

有没有办法在没有清单的情况下启用视觉样式,或者通过将清单嵌入可执行文件本身?

c c++ winapi

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

启动画面太快,我看不到 Fortran 程序的结果

我是编程的新手。我开始用 Fortran 编写我的 Hello world,但启动画面非常快。为什么我什么都看不到?为什么黑屏不显示:“hello world”?

我看到启动画面,但它以光速消失了......

program HelloWorld
   write (*,*) 'Hello, world!'   ! This is an inline comment
 end program HelloWorld
Run Code Online (Sandbox Code Playgroud)

fortran

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

自定义UITextField

我将如何创建UITextField像这个图像中的那个?

在此输入图像描述

它看起来略大,特别是高度.

iphone uitextfield

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

C++如何链接模板实例

如果我在由两个不同的转换单元包含的头文件中定义一个函数(可能是一个类成员函数但没有内联),我会得到一个链接错误,因为该函数是多次定义的.模板不是这样,因为它们不是可编译的类型,直到编译器解析模板化类型的对象的声明.这让我意识到我不知道编译模板代码所在的位置以及它是如何链接的,因为C++不只是创建多个代码副本来定义SomeTemplateClass.任何信息,将不胜感激.谢谢!

c++ templates hyperlink

14
推荐指数
2
解决办法
3296
查看次数

装饰器可以在运行时使用lambda表达式吗?

def attrs(**kwds):
      def decorate(f):
          for k in kwds:
              setattr(f, k, kwds[k])
          return f
      return decorate

@attrs(argument_types=(int, int,), returns=int)
def add(a, b):
      return a + b 
Run Code Online (Sandbox Code Playgroud)

这里我需要add()可以显示其可接受的参数类型.但是我可以在运行时做这样的事吗?

ladd=[]
for x in range(0,10):

      @attrs(argument_types=int, returns=int,default_parameter1 = x) 
      exp =  lambda : add(a,x)  
      ladd.append(exp)
Run Code Online (Sandbox Code Playgroud)

要么

ladd=[]
for x in range(0,10):

      @attrs(argument_types=int, returns=int,default_parameter1 = x) 
      addx = functools.partial(add, 2)  
      ladd.append(addx)
Run Code Online (Sandbox Code Playgroud)

我需要那些函数可以使用"decoratored"参数绑定生成运行时


好吧,这里是错误信息,我认为上面的代码无法正常工作,但我从未尝试将其粘贴到python来测试它...

>>> ladd=[]
>>> for x in range(0,10):
...     @attrs(argument_types=int, returns=int,default_parameter1 = x) 
...     exp =  lambda : add(a,x)  
  File "<stdin>", line 3 …
Run Code Online (Sandbox Code Playgroud)

python lambda decorator

12
推荐指数
2
解决办法
8021
查看次数

二进制数据到Unicode

在这里可用的所有编码http://docs.python.org/library/codecs.html中 哪一个是我应该用于将二进制数据解码为unicode而不会在我将其编码回字符串时损坏的那个?

我使用了raw_unicode_data并且它不起作用.

示例:我在POST中上传图片(但不是文件附件).Django使用utf-8将POST数据转换为unicode.但是,当从unicode转换回字符串(再次使用utf-8)时,数据会被破坏.我使用了raw_unicode_data并且发生了同样的事情(尽管这次只有几个字节).我应该使用哪种编码,以便解码和编码步骤不会破坏数据.

python unicode binary encoding character-encoding

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

Qt Creator书

是否有任何PDF教程或书籍如何Qt Creator和开发人员?

qt-creator

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

检测设备是否支持电话?

以下代码是否可靠用于确定设备是否可以支持电话呼叫?我担心的是,如果苹果将iphone字符串更改为其他任何东西,我们可以说他们决定使用"iphone 3g","iphone 4"等.

[[UIDevice currentDevice].model isEqualToString:@"iPhone"]
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c phone-call ios

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

从C程序加载原始代码

我正在编写一个程序来加载和执行文件中的代码.但是我遇到了一个问题:"写"系统调用不起作用.代码成功加载并执行,但不在屏幕上显示任何文本.

加载代码的程序:

#include < stdio.h >
#include < stdlib.h >

int main(int argc,char* argv[])
{
    unsigned int f_size = 0;
    unsigned char* code_buf = NULL;
    void (*func_call)(void) = NULL;

    if(argc < 2) 
    {
        printf("Usage: %s <FILE>\n",argv[0]);
        return 1;
    }

    FILE* fp = fopen(argv[1],"rb");
    if(!fp)
    {
        printf("Error while opening this file: %s\n",argv[1]);
        return 1;
    }

    unsigned int fsize = 0;
    fseek(fp,0,SEEK_END);
    fsize = ftell(fp);
    fseek(fp,0,SEEK_SET);
    if(fsize < 4)
    {
        printf("Code size must be > 4 bytes\n");
        return 1;
    }

    code_buf = …
Run Code Online (Sandbox Code Playgroud)

c linux assembly system-calls shellcode

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