任何人都可以在javascript中解释如何使用... in语句.我读过w3school的文章,但我觉得不太清楚.下面是代码,请解释一下:
<html>
<body>
<script type="text/javascript">
var x;
var mycars = new Array();
mycars[10] = "Saab";
mycars[20] = "Volvo";
mycars[30] = "BMW";
for (x in mycars)
{
document.write(mycars[x] + "<br />");
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我想用在句子中的下D2010我的测试案例.
如果我想写Param.Value变量然后编译器报告错误2064,但允许从同一记录写入Param.Edit.text,为什么?
测试用例:
type
//
TparamSet = (param_A, param_B, param_C, param_D, param_E, param_F);
TParam = record
Edit :TEdit;
Value :integer;
end;
var
dtcp :array [TparamSet] of TParam;
procedure ResetParams;
var
Param :TParam;
A :Integer;
begin
for Param in dtcp do
begin
Param.Edit.text:= 'Test'; //No problem
A := Param.Value; //No problem
Param.Value := 0; //Error: E2064 Left side cannot be assigned to;
end;
end;
Run Code Online (Sandbox Code Playgroud) 我有一个NSMutableDictionary,analyzedPxDictionary包含一堆Pixel对象(我创建的自定义类).除此之外,Pixel对象包含一个名为NSArray的属性rgb.该数组将始终包含三个NSNumber对象,其整数值对应于像素的rgb值.
我现在试图枚举analyzedPxDictionary使用快速枚举.但是,似乎我无法从循环内访问Pixel对象的属性.我声明rgb是一个合成属性,以便我可以使用点语法访问它.但是当我尝试从循环中执行此操作时,程序崩溃,给出了如下错误:
'-[NSCFString rgb]: unrecognized selector sent to instance 0xa90bb50'
以下是产生该错误的代码示例:
for (Pixel *px in analyzedPxDictionary) {
printf("r: %i, g: %i, b: %i",[[px.rgb objectAtIndex:0] integerValue], [[px.rgb objectAtIndex:1] integerValue], [[px.rgb objectAtIndex:2] integerValue]);
}
Run Code Online (Sandbox Code Playgroud)
我试过在那条printf线上设置一个断点来检查px.虽然rgb如果其属性被列为一个并且正确描述为NSArray的实例,但它似乎不包含任何对象.
我相信我rgb正确地初始化.要解释一下,请考虑以下代码:
NSString *key;
for (Pixel *px in analyzedPxDictionary) {
key = [px description];
}
Pixel *px = [analyzedPxDictionary objectForKey:key];
printf("\nr: %i, g: %i, b: %i",[[px.rgb objectAtIndex:0] integerValue], [[px.rgb objectAtIndex:1] integerValue], [[px.rgb …Run Code Online (Sandbox Code Playgroud) 我有一个NSMutableArray填充NSIntegers.我需要遍历数组.我可以:
// given NSMutableArray *array of NSIntegers
NSUInteger n = [array count];
for (NSInteger i = 0; i < n; i++) {
NSInteger x = [array objectAtIndex:i];
// query SQLite WHERE id = x
}
Run Code Online (Sandbox Code Playgroud)
但是,似乎for(数组中的对象)循环会更清晰.iOS 5不接受NSIntegers或NSNumbers作为for-in循环中的对象.我应该使用NSObjects遍历数组,在每次迭代期间将NSObject强制转换为NSInteger吗?还有另外一种方法吗?或者是一个for循环,就像上面这个问题最干净的解决方案?
我的程序中有以下对象
function Player(id) {
this.id = id;
this.healthid = this.id + "health";
this.displayText = "blah blah";
this.inFight = false;
this.currentLocation = 0;
this.xp = 0;
this.level = 1;
}
var player = new Player('player');
player.currentHealth = player.health;
Run Code Online (Sandbox Code Playgroud)
我打印出这样的属性名称
function displayStats() {
var statsHtml = "";
for ( var prop in player ) {
statsHtml += "<p id = 'displayPlayerHealth'>" + prop + "</p>";
}
$('.stats').html( statsHtml);
console.log(statsHtml);
}
displayStats();
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但我宣布的其他财产是这样的
Object.defineProperty(player,"health",{
set: function() {
return 10 + ( this.level * …Run Code Online (Sandbox Code Playgroud) 我试图访问实际位于另一个对象内的对象上的属性(名称).我在文件中初始化了对象:
var icons = {
"facebook": {name: 'facebook', icon_url: 'img/logos/facebook.png'}
};
Run Code Online (Sandbox Code Playgroud)
然后尝试使用以下代码检查对象:
var icon_current_class;
for(var icon in icons){
console.dir(icon);
//outputs an object named facebook but says it has no properties
if( $(this).hasClass( icon.name ) ){
icon_current_class = icon.name;
}else{
alert("Something went wrong. Please contact the mods.");
}
}
Run Code Online (Sandbox Code Playgroud)
当然,每次运行时,警报("出问题")都会消失.我已经尝试了很长时间才找到解决方案,但无济于事.有人可以帮忙吗?
我似乎无法找到使代码运行两次的错误,并且JSFiddle不适合我,所以我不能仔细检查它是否是编辑器.
var friends = {};
friends.bill = {
firstName: "Bill",
lastName: "Gates",
number: 9,
address: ["5242", "drank avenue"]
};
friends.steve = {
firstName: "Steve",
lastName: "Jobs",
number: 8,
address: ["3368", "pool lane"]
};
var list = function(person)
{
for (var friendName in person)
console.log(friendName);
};
list(friends);
Run Code Online (Sandbox Code Playgroud)
Output:
bill
steve
bill
steve
Run Code Online (Sandbox Code Playgroud) 我刚刚开始玩Swift.使用Playground时,根据Apple的iBook,以下应该有效:
var firstForLoop = 0;
for i in 1..3 {
firstForLoop += i;
}
Run Code Online (Sandbox Code Playgroud)
然而,翻译抱怨:"使用未解析的标识符'..'"我试过:
var firstForLoop = 0;
for i in 1...3 {
firstForLoop += i;
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好(包括循环中的上限值).Apple是否..已从Swift的语法中删除了该选项?
我在理解此for in循环工作方式时遇到麻烦。
function createSimpleNode(name, options, text) {
var node = document.createElement(name);
for (var o in options) {
node.setAttribute(o, options[o]);
}
if (text) {
node.innerHTML = text;
}
return node;
}
Run Code Online (Sandbox Code Playgroud) [有史以来第一个Stack-o-flow Python初学者用户的问题]
我一直在尝试创建一个附加数字1到10然后在python列表对象中从10擦除到1的函数.然而,我成功了,我遇到了for-in循环的奇怪行为.
以下是我所做的和成功的:
def a():
li = []
for i in range(1,11):
li.append(i)
print(li)
for n in range(1,11):
li.remove(li[-1])
print(li)
a()
Run Code Online (Sandbox Code Playgroud)
会打印:
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, …Run Code Online (Sandbox Code Playgroud) for-in-loop ×10
javascript ×5
loops ×2
object ×2
cocoa-touch ×1
css ×1
delphi ×1
delphi-2010 ×1
foreach ×1
function ×1
html ×1
ios ×1
ios5 ×1
iteration ×1
objective-c ×1
python ×1
python-3.x ×1
swift ×1