# 添加物品
for i in 1...$data_items.size
if $game_party.item_number(i) > 0
if $game_temp.in_battle
if $data_items[i].occasion == 0 or $data_items[i].occasion == 1
else
next
end
end
@data.push($data_items[i])
end
end
这段代码大神都知道什么意思了。我想请教一下。这里面的第二个分歧那里.in_battle后面没有声明是false或者是true的话。是默认为在$game_temp里面声明的那个false值么?如果在这里声明了,就是这里调用的值,对吧?
if 后面接表达式指的是
[pre lang="Ruby"]if $data_items.occasion == 0 or $data_items.occasion == 1[/pre]
之后你说的“没有语句”,意思是如果此条件满足(即该物品使用场合为0或者1),那么就什么都不做。如果条件不满足,则直接进行下一次循环(这样会无视掉后面的@data.push(...))。
因此我说这样写的习惯不太好,这就相当于这种情况:
[pre lang="Ruby"]a = true
if a
print "True"
else
end
if a
print "True"
end[/pre]
什么都不做的分支应该省略此分支。这里应该用第二种写法。
因此,改成这样为好:
[pre lang="Ruby"]if $data_items.occasion > 1
next
end[/pre]