B.s*_*uti 4 closures lexical-scope dart flutter
基本上我正在研究闭包函数的定义,它说 -
可以通过访问其词法范围内的变量来引用的函数称为闭包
所以我想知道这个术语的词法范围。
词法作用域变量/闭包等只能在定义它的代码块内访问。
\n\n\nDart 是一种词法范围的语言。通过词法作用域,后代作用域将访问最近声明的同名变量。首先搜索最里面的范围,然后通过其他封闭范围向外搜索。
\n
您可以 \xe2\x80\x9c 按照花括号向外 \xe2\x80\x9d 查看变量是否在范围内。
\n请参阅以下示例。
\nmain() { //a new scope\n String language = "Dart";\n\n void outer() {\n //curly bracket opens a child scope with inherited variables\n\n String level = \'one\';\n String example = "scope";\n\n void inner() { //another child scope with inherited variables\n //the next \'level\' variable has priority over previous\n //named variable in the outer scope with the same named identifier\n Map level = {\'count\': "Two"};\n //prints example: scope, level:two\n print(\'example: $example, level: $level\');\n //inherited from the outermost scope: main\n print(\'What Language: $language\');\n } //end inner scope\n\n inner();\n\n //prints example: scope, level:one\n print(\'example: $example, level: $level\');\n } //end outer scope\n outer();\n} //end main scope\nRun Code Online (Sandbox Code Playgroud)\n闭包是一个函数对象,即使该函数在其原始范围之外使用,也可以访问其词法范围内的变量。
\n /// Returns a function that adds [addBy] to the\n/// function\'s argument.\nFunction makeAdder(num addBy) {\n return (num i) => addBy + i;\n}\n\nvoid main() {\n // Create a function that adds 2.\n var add2 = makeAdder(2);\n \n // Create a function that adds 4.\n var add4 = makeAdder(4);\n \n assert(add2(3) == 5);\n assert(add4(3) == 7);\n}\nRun Code Online (Sandbox Code Playgroud)\n您可以从这里阅读更多内容。
\n| 归档时间: |
|
| 查看次数: |
2520 次 |
| 最近记录: |