- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在调用第一个函数之前,我本以为此 Dart 程序中的整数“i”已设置为 9。然而这个程序的输出是...
0, 2, 4, 6, 8, 10, 12 ,14, 16, 18
当我通常期望 10、11、12、13... 时,就像 JavaScript、C# 等一样。
Dart Lang 输出:0, 2, 4, 6, 8, 10, 12 ,14, 16, 18
typedef int TestFun(int x);
void main()
{
List<TestFun> functionList = new List<TestFun>();
for ( int i = 0; i < 10; i++) {
functionList.add( (int x) => x + i );
}
for ( int j = 0; j < 10; j++)
{
print(functionList[j](j));
}
}
等效的 JavaScript.... 输出 10,11,12...
var functionList = new Array;
for ( var i = 0; i < 10; i++) {
functionList[i] = function (x) { return x + i } ;
}
for ( var j = 0; j < 10; j++) {
alert( functionList[j](j) );
}
等效的 C#.... 输出 10,11,12...
public delegate int TestDel(int x);
public static void Main(string[] args)
{
IList<TestDel> functionList = new List<TestDel>();
for ( int i = 0; i < 10; i++)
{
functionList.Add((int x) => x + i);
}
for ( int j = 0; j < 10; j++)
{
System.Console.WriteLine(functionList[j](j));
}
}
这是 Dart 的错误吗?有人可以向我解释这种行为吗?
最佳答案
Dart 在这里故意避免了 JavaScript 容易出错的行为。声明自己变量的 for 循环将在每次迭代中拥有该变量的新版本。这适用于 for(var x = ...;;)
和 for (var x in ...)
(在后一种情况下,变量甚至可以是最终的)。
示例显示每次迭代都引入了一个新的自变量:
class Box {
final Function set;
final Function get;
Box(this.get, this.set);
String toString() => "[${get()}]";
}
main() {
var boxes = [];
for (int i = 0; i < 5; i++) {
boxes.add(new Box(()=>i, (x) { i = x; }));
}
print(boxes); // [[0], [1], [2], [3], [4]]
for (int i = 0; i < 5; i++) {
boxes[i].set(i * 2 + 1);
}
print(boxes); // [[1], [3], [5], [7], [9]]
}
关于javascript - 谷歌 Dartlang 中关闭的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23222611/
我想在完成很多 future 功能后做一些事情,但我不知道如何在 dart 中编写代码? 像这样的代码: for (var d in data) { d.loadData().then() } /
我有一个小问题,无法解决。我创建了带有复选框的表,它可以正常工作并且可以毫无问题地保存到json。现在,我想让我的复选框在页面加载时从json数据中设置其默认值(以使其更易于编辑)。无论如何,这是我的
现在,我真的对async / await感到困惑。 我的问题(我对代码做了一些注释): Future> getLinkStructure() async { _log.finest("getL
有没有可能把LIElement做成链接,怎么做? 我努力了 var li = new LIElement(); li.text = text; li.href = "http://www.google
有没有办法计算dart中元素的内部宽度?到目前为止我还没有找到解决方案。 JQuery 提供了 .innerWidth() 函数,但我想将此项目限制为仅使用 dart。 最佳答案 Element类提供
这是我的用例: 我有两个不同的Observables: Observable adEventStream; Observable colorStream; 当这两者中的任一个发出事件时,我需要收到通知
Dartlang 教程介绍 package:meta https://www.dartlang.org/docs/dart-up-and-running/contents/ch02.html#ch02
我想在 Dart 中获取上个月的第一天作为日期时间。 下面的代码 是 即使对于 也能正常工作x = 1(将 0 作为月份传递) print(new DateTime(2016,x-1,1)); 但
有人可以解释一下这种 Dart 语法吗?这是在某处记录的吗? abstract class FixedLengthListBase = ListBase with FixedLengthLis
是否有供 Dart 试验的 REPL? 我尝试在 Dartium 的 devtools 中输入 dart 代码,但也没有用。 所以我找不到在 dart 中使用各种 API 的简单方法。 最佳答案 虽然
我是Web编程的新手,直到现在,我只创建带有仅具有一个单选按钮或复选框等行的表。但是现在,我必须创建一个包含不同数目的单选按钮的行的表。我的表只有2列。第一列将包含行的指示符名称。第二列将包含单选按钮
我正在尝试触发 onclick 事件。我的代码如下所示: 索引.html: . All rights reserved. Use of this source code
我已经创建了这个类 class Opacity { String a,b,c; Opacity({this.a, this.b,this.c}); } 我正在尝试仅使用字符串和 HashMap
我已经将一些“Windows控制台”移到了另一个屏幕上,以最好地开发应用程序。但是重新启动DartEditor之后,该窗口为空,我无法关闭...等等。如何重置工作区? 我正在使用Osx平台。 测试步骤
在调用第一个函数之前,我本以为此 Dart 程序中的整数“i”已设置为 9。然而这个程序的输出是... 0, 2, 4, 6, 8, 10, 12 ,14, 16, 18 当我通常期望 10、11、1
我需要使用 dartlang 从浏览器下载较大的文件。 我一直在使用“data:uri”进行下载,但遇到了该方法的大小限制。 想知道最好的方法是什么,我研究了使用 HTML5 文件系统 API,但它已
我有以下代码,我正在尝试使用字符串插值来访问嵌套的 map 值。但是,它返回整个变量而不仅仅是一个特定的值。 Map> questionBank = { "1": { "question"
我想使用 DartLang 通过串口与 Arduino 通信,而不是通过 TCP/ip。 我找到了 DartLang chrome package和 Chrome Serial reference ,
我想知道是否有可能在pubspec.yaml文件中定义“仅开发”转换器。 我的问题是: 我在单独的存储库中有一些angular2组件。我在他们各自的example文件夹中为他们写了一些示例。为了运行这
rikulo.org 有一个很棒的列表 View 示例,位于 http://rikulo.org/resource/js/examples/index-list.html 在此示例中,如何检测列表中的
我是一名优秀的程序员,十分优秀!