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

Project1

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

[RMXP发布] 【学院派】Ruby Coolbook学习笔记 一

 关闭 [复制链接]

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

跳转到指定楼层
1
发表于 2008-4-19 05:11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
今天图书馆翻到了Ruby Coolbook,这个系列一直是非常出色的进阶教程
趁这个机会把ruby系统的补课一下,一边翻一边摘抄笔记
如果你是高手,当然不需要看本文了
如果你是新手,本文可能比较难懂
如果你已经脚本基础入门了,那么本篇可能很适合你
因为涉及到的一些知识都是比较进阶的了,呵呵


按照书里的顺序开始
第一章 字符串

ruby最简单的字符串语句:
string = "梦想世界 在你手中"
#=> "梦想世界 在你手中"

计算长度的话:
string.length

这里需要说的是,不同于java将字符串视为一个字符序列,Ruby将字符串视为一个字节序列。
区别在哪里呢?法语字符串包括14个字母3个空格,看上去长度是17,但是其中一个字母(带重音的e)被表示为2个字节,那ruby计算的结果会是18

如果我们要给字符串赋很长的值,可以这么做:
string = <<EOF
壁炉里烧着精灵的头骨,紫色藤条爬上了长在泥中的旧木桌。
绿色蒸腾的雾气使石墙湿淋淋的,我在淡蓝的烛光前发着愁,不知怎样在我的羊皮纸上写下第一个字。
EOF

#=> "壁炉里烧着精灵的头骨,紫色藤条爬上了长在泥中的旧木桌。\n绿色蒸腾的雾气使石墙湿淋淋的,我在淡蓝的烛光前发着愁,不知怎样在我的羊皮纸上写下第一个字。\n"

这被称为here documents结构
他容易阅读,要求定义多行字符串,仅当分析其遇到某行上的特定字符串时才结束。而且这个字符串是灵活的

那么,如果我们要获得string中某段字符串的话,会有多少选择呢?
幸运的是,ruby给不同编程习惯的人提供了很多种方法
比如
string = "My first string"
要提取到"first"的话,可以:
string.slice(3, 5)  #=>"first"
也可以用c风格的字节数组方式访问:
string[3].chr + string[4].chr + string[5].chr + string[6].chr + string[7].chr
#=>"first"
当然,也有符合python语言风格的:
string[3, 5]  #=>"first"


这里我们讲到ruby的一些方法后面会带有?或者!,顺便就说说他们的作用
比如
string.upcase  #=>"FIRST"
string         #=>"first"
string.upcase! #=>"FIRST"
string         #=>"FIRST"
看出作用了么?简单地说,不带!的方法一般会返回一个新的对象,而不改变原对象的内容。但是带!的方法就会改变原对象的值了。术语的话这被称为Dangerous方法

带?的就更容易懂了,一般就是返回真/伪值得方法尾部添加?,就好象方法名提出了一个是非题的问题,要求的一个true/false的答案一般
例如:string.empty?

这点很符合Ruby的设计原理:Ruby是一门主要用于人类读写,其次用于计算机理解的语言


呵呵,下面说说Rm经常看到的#{}
其实作用是将变量带入字符串
简单的例子是:
number = 66
"#{number}RPG是一个牛逼的网站"   #=>"66RPG是一个牛逼的网站"

当然,Ruby支持的不仅仅如此
任何在#{}中的内容,都会被认为是一个表达式。该表达式的结果被替换为字符串,如果表达式结果不是字符串,那么会自动调用to_s方法

所以,我们甚至可以这么做:
"#{x=60; x+=6}RPG是一个牛逼的网站"   #=>"66RPG是一个牛逼的网站"
x                                    #=>6

如果你要避免出现字符串变量插入的情况,只需要加入\就可以了,例如
"\#{number}"   #=>"\#{number}"
或者使用单引号
'#{number}'    #=>"\#{number}"


下面我们了解一下printf-style字符串
printf-style字符串是C风格的方法,具体如下例:
string = '%s是一个牛逼的网站'
string % '66RPG'    #=>"66RPG是一个牛逼的网站"
string % 'google'   #=>"google是一个牛逼的网站"


呵呵,拿要是我们准备分割一个字符串,该怎么做呢?
熟悉rm的都知道了,当然就是split方法了
"你 我 他".split(/\s+/)  #=>["你","我","他"]
split方法将正则表达式用作分隔符。
那么如果我连空格都要保存,咋办捏?
简单,使用正则表达式/(\s+)/,其包括了一组圆括号,因此分隔符字符串本身被包括在返回链表中。所以:
"你 我 他".split(/(\s+)/)  #=>["你"," ","我"," ","他"]


此外,ruby还未键盘序列提供表达方式,比如“\C-x”表示按着control并单击x所得到的序列。


下面有个有趣的问题,我们能不能把一个字符串里的空白字符抽调?
比如把“00 145 0456 177”中的空格去掉?
直接使用strip方法就可以了
那什么属于空白字符呢?它们包括:空格、\t、\n、\r、\f


哦了,基础常用的知识就这点了
其他的内容偶没有摘抄,一般不是特殊情况的话不会去研究,而且看了有点头大
先写这么点好了,呵呵

不要说这个全是书上的东西米用哦,书是偶借的要还的嘛,留个笔记备忘还是不错的~
神隐中,偶尔诈尸

Lv1.梦旅人


2
发表于 2008-4-19 05:17:53 | 只看该作者
好朋友的评价!  —— 好烂啊!{/cy}

——我承认,我妒忌雷子的才华
[url=http://tvsolo.net/]TVSOLO|[/url][url=http://tvsolo.net/]电视搜罗|[/url][url=http://tvsolo.net/]http://www.tvsolo.net/[/url]
[font=黑体][size=3][url=http://tvsolo.net][color=Red]最新动漫热播[/color][/url]http://www.tvsolo.net[/size][/font]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

3
 楼主| 发表于 2008-4-19 05:19:12 | 只看该作者
以下引用小叽于2008-4-18 21:17:53的发言:

好朋友的评价!  —— 好烂啊!

居然不支持咿刚,好歹我也打了半个钟头了。。。。
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
4
发表于 2008-4-19 05:33:03 | 只看该作者
不会啊~~~我觉得
小细节写的很清楚啊~~~~

当成 RUBY细节 备忘录还不错

{/qiang}

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

Lv1.梦旅人

胃:伪·好人之怨念<

梦石
0
星屑
50
在线时间
4 小时
注册时间
2007-6-24
帖子
5058

开拓者VX城市地图大赛亚军

5
发表于 2008-4-19 05:45:40 | 只看该作者
我在复旦图书馆也见过Ruby教程,拿起来想翻一下,不小心脱手了……
然后我把书放回去,去了医务室包扎我可怜的脚趾头……
哈哈哈哈哈
回复 支持 反对

使用道具 举报

Lv1.梦旅人


6
发表于 2008-4-19 05:47:24 | 只看该作者
真可怜!
[url=http://tvsolo.net/]TVSOLO|[/url][url=http://tvsolo.net/]电视搜罗|[/url][url=http://tvsolo.net/]http://www.tvsolo.net/[/url]
[font=黑体][size=3][url=http://tvsolo.net][color=Red]最新动漫热播[/color][/url]http://www.tvsolo.net[/size][/font]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

7
 楼主| 发表于 2008-4-19 05:48:52 | 只看该作者
以下引用cheyenne于2008-4-18 21:45:40的发言:

我在复旦图书馆也见过Ruby教程,拿起来想翻一下,不小心脱手了……
然后我把书放回去,去了医务室包扎我可怜的脚趾头……


今天就在和同学说那书可以用来当板砖,原来就真的有人遇害了。。。真不错
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1020
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

8
发表于 2008-4-19 06:01:07 | 只看该作者
800頁那本嗎?--望天
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
27 小时
注册时间
2008-2-13
帖子
1740
9
发表于 2008-4-19 06:49:13 | 只看该作者
貌似不错{/qiang}

以前的脚本教程讲得太多的有关语法的。。。
今天总算找到个讲RGSS的方法了
好吧,果然换个签名就没人认识我了。我承认我被时间埋没了
回复 支持 反对

使用道具 举报

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

10
发表于 2008-4-19 06:56:27 | 只看该作者
同望天……
胃同学,你是复旦的么……我有一高中同学在那……

P。S 很好用的东西啊啊……支持继续写下去……
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 17:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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