设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2335|回复: 6
打印 上一主题 下一主题

[已经解决] 新手学RGSS3有一段代码看不明白,麻烦帮忙解读下。

[复制链接]

Lv4.逐梦者

梦石
0
星屑
14591
在线时间
2194 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2019-2-23 18:45:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 miantouchi 于 2019-2-23 18:52 编辑
  1. class RPG::Actor < RPG::BaseItem
  2.   def battler_name
  3.     return @battler_name unless @battler_name.nil?
  4.     if /@btname\[(.+?)\]/ =~ @note
  5.       return (@battler_name = $1.clone)
  6.     else
  7.       return (@battler_name = "#{@name}_#{@nickname}")
  8.     end
  9.   end
  10.   def battler_hue
  11.     return @battler_hue unless @battler_hue.nil?
  12.     if /@bthue\[([0-9]+?)\]/ =~ @note
  13.       return (@battler_hue = $1.to_i.abs)
  14.     else
  15.       return (@battler_hue = 0)
  16.     end
  17.   end
  18.   attr_writer :battler_name
  19.   attr_writer :battler_hue
  20. end
复制代码

正常的@+变量,是实例变量我知道,
if /@btname\[(.+?)\]/ =~ @note 这一行我就读不明白了\转义符号我也知道,但是 /斜杠是怎么回事,这里面的\[是啥意思,还有(.+?)是啥意思,看了几天ruby新手入门再看这个怎么也理解不来这块代码,麻烦帮忙解读下。
最好是通段解读

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

4
发表于 2019-2-23 22:39:37 | 只看该作者
if /@btname\[(.+?)\]/ =~ @note
      return (@battler_name = $1.clone)

//两个斜杠之间的内容是正则表达式,=~是匹配,匹配结果可以用$&,$1,$2,...来查看
可以是字符串=~正则表达式也可以是正则表达式=~字符串(文中的这种)

@note就是数据库里的备注 是一个字符串
/@btname\[(.+?)\]/  就是如果字符串包含有”@byname[任意个换行符以外字符]”就匹配成功
同时将正则表达式中小括号部分(也就是任意个换行符以外字符)存入$1
后面就可以对匹配的部分进行处理

点评

哥们你太猛了  发表于 2019-2-23 22:52

评分

参与人数 1星屑 +30 收起 理由
VIPArcher + 30 认可答案

查看全部评分

用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
2
星屑
6687
在线时间
501 小时
注册时间
2018-3-23
帖子
533

R考场第七期银奖

3
发表于 2019-2-23 20:21:24 | 只看该作者
这是正则表达式,新手学可能会比较难一点
/@btname\[(.+?)\]/,其中//中是正则表达式的内容。
这段我没理解错的话,是在@note包含"@btname[空白或任意非换行符\n的字符]"时返回true。具体看2楼的教程不错

点评

感谢分析,等我学完了正则基础再来,解读下你给的答案,暂时不能读透彻。  发表于 2019-2-23 21:39

评分

参与人数 1星屑 +20 收起 理由
VIPArcher + 20 认可答案

查看全部评分

祝好。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
2
发表于 2019-2-23 19:04:00 | 只看该作者
这个是正则表达式, 它不算新手怪了.....

它的意思是获取备注里匹配的字符串

详细可以看这里 传送门

点评

刀王你最好了,帮助我好几次了,我看看  发表于 2019-2-23 19:09

评分

参与人数 1星屑 +20 收起 理由
VIPArcher + 20 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 22:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表