标签: scope

Jinja变量的范围是否可以扩展到内部块?

我有以下Jinja模板:

{% set mybool = False %}
{% for thing in things %}
    <div class='indent1'>
        <ul>
            {% if current_user %}
              {% if current_user.username == thing['created_by']['username'] %}
                {% set mybool = True %}
                <li>mybool: {{ mybool }}</li> <!-- prints True -->
                <li><a href='#'>Edit</a></li>
              {% endif %}
            {% endif %}
            <li>Flag</li>
        </ul>
    </div>
    <hr />
{% endfor %}

{% if not mybool %}
    <!-- always prints this -->
    <p>mybool is false!</p>
{% else %}
  <p>mybool is true!</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

如果在for …

variables templates scope jinja2

57
推荐指数
5
解决办法
4万
查看次数

JavaScript循环变量范围

关于JavaScript变量范围的快速问题.

为什么alert()函数打印值i而不是返回undefined

$(document).ready(function () {
    for(var i = 0; i < 10; i += 1){
    }

     alert("What is 'i'? " + i);
});
Run Code Online (Sandbox Code Playgroud)

我对JS很新,在几乎所有其他语言中我都涉及过,for循环范围内的声明将包含该循环的值,但在这种情况下不是,为什么?

What is 'i'? 10'打印.

javascript variables scope for-loop

57
推荐指数
5
解决办法
6万
查看次数

静态(词法)范围与动态范围(伪代码)

Program A()
{
    x, y, z: integer;

    procedure B()
    {
        y: integer;
        y=0;
        x=z+1;
        z=y+2;
    }

    procedure C()
    {
        z: integer;

        procedure D()
        {
            x: integer;
            x = z + 1;
            y = x + 1;
            call B();
        }

        z = 5;
        call D();
    }

    x = 10;
    y = 11;
    z = 12;
    call C();
    print x, y, z;
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,使用静态作用域运行时该程序的结果是:x = 13,y = 7,z = 2.

但是,当使用动态范围运行时,结果为:x = 10,y = 7,z = 12.

这些结果是我们教授给我们的结果.但是,我无法理解他的生活如何达到这些结果.有人可能会通过伪代码并在两种不同类型的范围内解释它们的值吗?

scope pseudocode output

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

混合extern和const

我可以将extern和const混合为extern const吗?如果是,const限定符是否仅在其声明的范围内强加它的统治,或者它是否应与它声明的转换单元的声明完全匹配?即extern const int i;即使实际的i不是const,反之亦然,我可以声明说吗?

c c++ scope const extern

56
推荐指数
3
解决办法
5万
查看次数

请解释在循环中使用JavaScript闭包

我已经阅读了关于循环内的闭包和闭包的一些解释.我很难理解这个概念.我有这样的代码:有没有办法尽可能地减少代码,因此闭包的概念可以更清晰.我很难理解i两个括号内的部分.谢谢

function addLinks () {
    for (var i=0, link; i<5; i++) {

        link = document.createElement("a");
        link.innerHTML = "Link " + i;


        link.onclick = function (num) {
            return function () {
                alert(num);
            };
        }(i);
        document.body.appendChild(link);

    }
}
window.onload = addLinks;
Run Code Online (Sandbox Code Playgroud)

javascript closures scope loops

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

无法访问函数内的全局变量

这(我的代码的简化版)不起作用:

<?php
    $sxml = new SimpleXMLElement('<somexml/>');

    function foo(){
        $child = $sxml->addChild('child');
    }

    foo();
?>
Run Code Online (Sandbox Code Playgroud)

为什么?我想访问,$sxml因为我想在foo()失败时记录错误. foo()递归调用自己来创建一个目录列表,所以我担心将整体传递给$sxml自己(如同foo($sxml))可能会损害性能.

有没有办法进入$sxml内部$foo而不将其作为参数传递?(PHP 5.2.x +)

编辑:如果代码看起来像这样,实际上怎么办?

<?php
    bar(){
        $sxml = new SimpleXMLElement('<somexml/>');
        function foo(){
            $child = $sxml->addChild('child');
        }
        foo();
    }
    bar();
?>
Run Code Online (Sandbox Code Playgroud)

php variables scope global-variables

56
推荐指数
3
解决办法
9万
查看次数

在Haskell中,我们何时使用let?

在下面的代码中,我可以把最后一个词放在in前面.它会改变什么吗?

另一个问题:如果我决定放在in最后一个短语的前面,我是否需要缩进它?

我试着没有缩进和拥抱抱怨

do {...}中的最后一个生成器必须是表达式

import Data.Char
groupsOf _ [] = []
groupsOf n xs = 
    take n xs : groupsOf n ( tail xs )

problem_8 x = maximum . map product . groupsOf 5 $ x
main = do t <- readFile "p8.log" 
          let digits = map digitToInt $concat $ lines t
          print $ problem_8 digits
Run Code Online (Sandbox Code Playgroud)

编辑

好的,所以人们似乎不明白我在说什么.让我重新说一下:鉴于上述背景,以下两个是否相同?

1.

let digits = map digitToInt $concat $ lines t
print $ problem_8 digits
Run Code Online (Sandbox Code Playgroud)

2.

let …
Run Code Online (Sandbox Code Playgroud)

whitespace haskell scope let where-clause

56
推荐指数
3
解决办法
5万
查看次数

如何获取当前范围/符号表中定义的所有变量?

PHP中是否有一个函数和/或对象和/或扩展,可以让您查看当前作用域中定义的所有变量?就像是:

var_export($GLOBALS)
Run Code Online (Sandbox Code Playgroud)

但只显示当前符号表中的变量.

php debugging scope

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

局部变量范围的问题.怎么解决?

尝试statemet.executeUpdate()在我的代码中执行时,我收到以下错误:

Local variable statement defined in an enclosing scope must be final or effectively final.
Run Code Online (Sandbox Code Playgroud)

到目前为止这是我的代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;.

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class a1 {

    protected Shell shell;
    private Text text;
    private Text text_1;
    private Text text_2;
    private Text text_3;

    /**
     * Launch the application.
     * @param args
     */
    public static void main(String[] args) {
        try { …
Run Code Online (Sandbox Code Playgroud)

java scope

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

Python在嵌套函数中覆盖变量

假设我有以下python代码:

def outer():
    string = ""
    def inner():
        string = "String was changed by a nested function!"
    inner()
    return string
Run Code Online (Sandbox Code Playgroud)

我想调用outer()来返回"String被嵌套函数改变了!",但我得到了"".我得出结论,Python认为该行string = "string was changed by a nested function!"是对inner()本地新变量的声明.我的问题是:如何告诉Python它应该使用outer()字符串?我不能使用global关键字,因为字符串不是全局的,它只是在外部范围内.想法?

python scope

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