Project1

标题: [已解决]if $game_map.map_id == 1 如果有很多怎么表达能简练? [打印本页]

作者: miantouchi    时间: 2019-9-5 21:44
标题: [已解决]if $game_map.map_id == 1 如果有很多怎么表达能简练?
本帖最后由 miantouchi 于 2019-9-6 07:20 编辑

if $game_map.map_id == 1
        .....
else
        .....
end
如果有很多怎么表达能简练?
我现在是地图ID=1的话就操作。。。。

如果以后有很多张地图,不连续的怎么表达,如果像我下面这么写太长了,不利于维护,有没有什么好的办法
if $game_map.map_id == 1 or $game_map.map_id == 2 or $game_map.map_id == 5 or $game_map.map_id == 12
        .....
else
        .....
end

作者: soulsaga    时间: 2019-9-5 22:07
本帖最后由 soulsaga 于 2019-9-5 22:09 编辑

if [1,2,5,12].include?($game_map.map_id)

作者: soulsaga    时间: 2019-9-6 16:08
本帖最后由 soulsaga 于 2019-9-6 20:36 编辑

顺帶一提..数组判断大於小於可以用all?

RUBY 代码复制
  1. if [1,2,3].all? {|v| v > $game_map.map_id}


'

F1的Enumerable项有介绍

all?
all? {|item| ... }
当所有元素都为真时,返回 true。若某元素为假时,立即返回 false。

若带块调用时,会依次为各个元素来执行块的内容,若所有的结果都为真,则返回 true。一旦块返回假时, 立即返回 false。

p [1,2,3].all? {|v| v > 0}   # => true
p [1,2,3].all? {|v| v > 1}   # => false

any?
any? {|item| ... }
当所有元素都为假时,返回 false。一旦某元素为真时,立即返回 true。

若带块调用时,会依次为各个元素来执行块的内容,若所有的结果都为假,则返回 false。一旦块返回真时,立即返回 true。

p [1,2,3].any? {|v| v > 3}   # => false
p [1,2,3].any? {|v| v > 1}   # => true


作者: 灯笼菜刀王    时间: 2019-9-6 16:40
case $game_map.map_id
when 1,3,5
   改革春风吹满地
when "A", "B","C",
  中国人民真争气
else
  齐德隆
end
  




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1