If else 语句和分配变量
Posted
技术标签:
【中文标题】If else 语句和分配变量【英文标题】:If else statements and assigning variables 【发布时间】:2014-03-05 08:49:19 【问题描述】:所以我有一个正在为游戏编写的代码。游戏在这里无关紧要,但这是我的代码中产生问题的部分。本质上,我希望该函数接受士兵类型的输入,然后替换为建造任何给定数量的士兵所需的每种资源的数量。我已经编写了函数的后半部分并且工作正常,但是我遇到了变量赋值问题。
cost=function(troop,from,to)
troop=c("phalanx","druidrider","pathfinder")
if(troop=="phalanx")
w=100
cl=130
i=55
cr=30
else if(troop=="druidrider")
w=360
cl=330
i=280
cr=120
else if(troop=="pathfinder")
等等。我想知道一些事情:首先,有没有更有效的方法来做到这一点?我希望能够输入“成本(方阵,30,50)”,它会自动使用我尝试分配给方阵的值来获取资源 w、cl、i、cr,并将其替换为其余的方程。它给了我一个错误提示
Warning message:
In if (troop == "phalanx") :
the condition has length > 1 and only the first element will be used
我做错了什么?
谢谢!
【问题讨论】:
这是什么编程语言? (另外,代码行开头的+
s 或 Markdown 是否出错了?)
troop=c("phalanx","druidrider","pathfinder") 是做什么的?
它在 R 中。我认为 troop=c("phalanx","druidrider","pathfinder") 会摆脱错误,因为它会说“方阵未定义”当我复制和粘贴时,+ 符号就在我的代码的开头
将troop
作为函数的参数然后立即覆盖任何可能已传递给troop
的值是没有任何意义的。
【参考方案1】:
警告是因为troop
是一个具有 3 个元素的向量,当您进行比较时:troop=="phalanx"
它返回一个具有 3 个值(TRUE、FALSE、FALSE)的逻辑向量。然后将其传递给 if
语句,该语句期望单个逻辑值,但它收到 3,因此它忽略最后 2 个并根据第一个值执行代码。
目前尚不清楚您究竟想在这里做什么,但创建具有所需值的列表列表可能更简单,然后您可以按名称访问子列表以获取与相关联的值集那个名字。
【讨论】:
【参考方案2】:你在你的函数中犯了一个错误。你不能重新分配部队。
cost=function(troop,from,to)
#troop=c("phalanx","druidrider","pathfinder")
if(troop=="phalanx")
w=100
cl=130
i=55
cr=30
else if(troop=="druidrider")
w=360
cl=330
i=280
cr=120
else if(troop=="pathfinder")
只要放出troop =
部分。如果你有它,部队是一个向量,然后if
不知道它应该与向量的哪个元素进行比较。在您的代码中写出if(troop=="phalanx")
是if(c("phalanx","druidrider","pathfinder") == "phalanx")
,这没有意义(因为它提供了一个布尔向量TRUE, FALSE, FALSE
,并且只使用了第一个TRUE
。
【讨论】:
以上是关于If else 语句和分配变量的主要内容,如果未能解决你的问题,请参考以下文章
Javascript IF,ELSE IF总是选择IF语句[重复]