标签: local-variables

angular - 在observable <Object>上使用异步管道并将其绑定到html中的局部变量

嗨,我有一个可观察的用户$,有很多属性(名称,标题,地址......)

component{
  user$:Observerable<User>;
  constructor(private userService:UserService){
    this.user$ = this.userService.someMethodReturningObservable$()
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在html模板中使用异步管道来订阅它并将其绑定到这样的局部变量

<div #user="user$ | async">
  <h3> {{user.name}}
</div>
Run Code Online (Sandbox Code Playgroud)

我知道可以在构造函数中订阅它然后在OnLeave/OnDestroy中取消订阅但我只是好奇我是否可以使用异步管道.

干杯

pipe local-variables typescript angular2-observables angular

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

如何在C#中声明一个局部常量?

如何在C#中声明一个局部常量?

与在Java中一样,您可以执行以下操作:

public void f(){
  final int n = getNum(); // n declared constant
}
Run Code Online (Sandbox Code Playgroud)

如何在C#中做同样的事情?我试着用readonlyconst,但没有一个似乎工作.

任何帮助将不胜感激.

谢谢.

c# local-variables readonly immutability

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

从C函数返回字符串

我在3年多的时间里没有使用过C,我在很多方面都很生气.

我知道这可能看起来很愚蠢,但我现在无法从函数返回一个字符串.请假设:我不能string.h用于此.

这是我的代码:

#include <ncurses.h>

char * getStr(int length)
{   
    char word[length];

    for (int i = 0; i < length; i++)
    {
        word[i] = getch();
    }

    word[i] = '\0';
    return word;
}

int main()
{
    char wordd[10];
    initscr();
    *wordd = getStr(10);
    printw("The string is:\n");
    printw("%s\n",*wordd);
    getch();
    endwin();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我可以捕获字符串(使用我的getStr函数)但我无法正确显示它(我得到了垃圾).

感谢帮助.

c string return local-variables

30
推荐指数
5
解决办法
11万
查看次数

为什么实例字段不需要是 final 或有效 final 才能在 lambda 表达式中使用?

我正在用 Java 练习 lambda 表达式。根据 Java SE 16 Lambda Body的 Oracle 文档,我知道局部变量需要是 final 或有效 final 的:

任何使用但未在 lambda 表达式中声明的局部变量、形式参数或异常参数必须是 final 或有效 final (§4.12.4),如 §6.5.6.1 中所述。

但它没有说为什么。搜索我发现了这个类似的问题为什么 lambdas 中的变量必须是最终的或有效的最终?,其中 StackOverflow 用户“snr”回复了下一个引用:

到目前为止,Java 中的局部变量不受竞争条件和可见性问题的影响,因为它们只能被执行声明它们的方法的线程访问。但是一个 lambda 可以从创建它的线程传递到另一个线程,因此如果由第二个线程评估的 lambda 被赋予改变局部变量的能力,那么这种免疫力就会丧失。

这就是我的理解:一个方法一次只能由一个线程(比如说 thread_1)执行。这确保该特定方法的局部变量仅由 thread_1 修改。另一方面,可以将 lambda 传递给不同的线程 (thread_2),因此...如果 thread_1 完成 lambda 表达式并继续执行方法的其余部分,则它可能会更改局部变量的值,并且,在同时,thread_2 可能会更改 lambda 表达式中的相同变量。然后,这就是存在此限制的原因(局部变量需要是 final 或有效 final 的)。

对不起,很长的解释。我做对了吗?

但接下来的问题是:

  • 为什么这种情况不适用于实例变量?
  • 如果 thread_1 与 thread_2 同时更改实例变量会发生什么(即使它们没有执行 lambda 表达式)?
  • 实例变量是否以另一种方式保护?

我对Java没有太多经验。对不起,如果我的问题有明显的答案。

java lambda instance-variables local-variables

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

28
推荐指数
2
解决办法
9528
查看次数

在 Visual Studio Code 中突出显示未定义的 Javascript 变量

我在 Javascript 中最喜欢犯的错误之一是忘记定义我在函数中本地使用的变量。众所周知,由于范围的原因,这并不总是错误。

Visual Studio Code 中是否有任何方法可以突出显示函数中未定义的变量?

例如,假设我有以下功能:

function MyFunction(argument1){ /* Note: not argument5 */
    var i; /* Note: not j */
    var arr1 = []; /* Note: not arr2 */

    ... /*Exciting code in between */

    len = 7;

    for(j=0;j<len;j++){
        arr2[j] = "Wibble" + argument5;
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望lenjarr2argument5all 以某种方式突出显示,以表明它们没有在函数中本地定义。

javascript local-variables visual-studio-code

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

在什么时候通常为C++中的局部变量分配内存?

我正在调试一个相当奇怪的堆栈溢出,据说是在堆栈上分配太大的变量引起的,我想澄清以下内容.

假设我有以下功能:

void function()
{
    char buffer[1 * 1024];
    if( condition ) {
       char buffer[1 * 1024];
       doSomething( buffer, sizeof( buffer ) );
    } else {
       char buffer[512 * 1024];
       doSomething( buffer, sizeof( buffer ) );
    }
 }
Run Code Online (Sandbox Code Playgroud)

我理解,它依赖于编译器,也取决于优化器决定什么,但为这些局部变量分配内存的典型策略是什么?

输入功能后是否会立即分配最坏情况(1 + 512千字节)或首先分配1千字节,然后根据条件另外分配1或512千字节?

c++ stack-overflow memory-management local-variables visual-c++

26
推荐指数
4
解决办法
1471
查看次数

退出bash局部变量赋值中的命令替换代码

如果赋值是函数中的局部变量,如何在bash中检查命令替换的退出代码?
请参阅以下示例.第二个是我想检查退出代码的地方.
有人有一个良好的解决方案或正确的解决方案吗?

$ function testing { test="$(return 1)"; echo $?; }; testing
1
$ function testing { local test="$(return 1)"; echo $?; }; testing
0
Run Code Online (Sandbox Code Playgroud)

bash local-variables exit-code command-substitution

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

在Ruby中动态设置局部变量

我对在Ruby中动态设置局部变量感兴趣.不创建方法,常量或实例变量.

所以类似于:

args[:a] = 1
args.each_pair do |k,v|
  Object.make_instance_var k,v
end
puts a
> 1
Run Code Online (Sandbox Code Playgroud)

我特别想要局部变量,因为所讨论的方法存在于模型中,我不想污染全局或对象空间.

ruby metaprogramming local-variables

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

为什么局部变量会杀死我的全局变量?

对不起这个问题,但这个问题真的搞砸了我的一天.

以下代码警告10应该:

var globalId='10';  
function check(){  
    alert(globalId);  
}  
check();
Run Code Online (Sandbox Code Playgroud)

但是下一个代码警告未定义:

var globalId='10';  
function check(){  
    alert(globalId); 
    var globalId; 
}  
check();
Run Code Online (Sandbox Code Playgroud)

我知道如果我在函数中声明一个变量,它是一个局部变量,但如果我已经将它声明为全局变量,那么我的警报怎么说未定义呢?

这是一个简单的例子,但在我的原始代码中,我在函数的开头之间做了很多东西,然后我检查了很长时间以查看是否globalId已定义,否则定义它:if(!globalId){var globalId;}这意味着我的警报位于函数顶部生成未定义,好像JavaScript首先执行整个函数,只是为了查看是否可以声明任何变量,如果是,则声明它们,因此我的警报指向'未声明'变量.

任何人都可以向我解释为什么会发生这种情况,并且如果JavaScript在执行函数之前"预先声明"所有变量,那么甚至在甚至不满足的条件下声明的变量也是如此?

javascript variables global-variables local-variables

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