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

Project1

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

RUBY问题收集帖

 关闭 [复制链接]

Lv1.梦旅人

有事烧纸

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

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

跳转到指定楼层
1
发表于 2006-12-20 15:32:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
说明部分:

1、该帖子用于收集一些不常用的,但在有的情况下又比较重要的一些问题,主要针对ruby语言,不是局限于rgss。比如:什么是迭代器、是什么块、怎么重定义模块方法、pack怎么用等。

2、只要是这些问题你有什么不明白的,可以在这里提出来,我或者其他人会尽力解决。当然你觉得比较好了,也可以说出来和大家分享。

3、普通的关于rm中脚本的一些问题,比如菜单什么的就不要在这个帖子里问了,直接在技术区or新人区发问就行,灌水等会被删除帖子。


问题集:
神隐中,偶尔诈尸

Lv1.梦旅人

有事烧纸

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

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

2
 楼主| 发表于 2006-12-20 15:32:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
说明部分:

1、该帖子用于收集一些不常用的,但在有的情况下又比较重要的一些问题,主要针对ruby语言,不是局限于rgss。比如:什么是迭代器、是什么块、怎么重定义模块方法、pack怎么用等。

2、只要是这些问题你有什么不明白的,可以在这里提出来,我或者其他人会尽力解决。当然你觉得比较好了,也可以说出来和大家分享。

3、普通的关于rm中脚本的一些问题,比如菜单什么的就不要在这个帖子里问了,直接在技术区or新人区发问就行,灌水等会被删除帖子。


问题集:
神隐中,偶尔诈尸

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

3
发表于 2006-12-20 16:58:02 | 只看该作者
yield 是什么意思,上次叶子说过一回,但似乎我理解上有出入,RGSS里这个东西一直没完全理解.
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

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

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

4
 楼主| 发表于 2006-12-20 17:17:19 | 只看该作者
以下引用美兽于2006-12-20 8:58:02的发言:

yield 是什么意思,上次叶子说过一回,但似乎我理解上有出入,RGSS里这个东西一直没完全理解.


其实在ruby里,yield就是实现迭带器的,比如Array里的each什么都是通过这个来实现的。
首先,yield必须和块连用,块就是跟在方法后面的{},可以暂时理解为参数也行。比如:
def test
  yield
  yield
end

test{p 'test'}

会p两次 test。现在来解释下这个方法的运行:首先调用方法,然后接着到后面的{},但这里不会运行,而直接进入方法里面,也就是执行yield,而yield就是使先前的块执行,也就是{}里的内容,所以p了两次test。
然后这种:
def test
  yield(1)
end
test{|i| p i}
yield带参数的,执行的时候就会把参数传递给||中间这个变量,然后执行块。

所以,现在我们来定义Array的each方法就是这样:
  def each
    for i in 0...size
      yield(self)
    end
  end

最后,block_given?这个可以判断方式是否带块,这样使用:
def test
  if block_given?
    yield
    p 'block'
  else
    p 'noblock'
  end
end
test{}
test
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-9-14
帖子
11
5
发表于 2006-12-20 17:24:50 | 只看该作者
不厌其烦地再不好意思地问句:
....为什么我建立新的rb文件时..总是一打开就立刻关闭掉...
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

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

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

6
 楼主| 发表于 2006-12-20 17:36:48 | 只看该作者
以下引用Melodia于2006-12-20 9:24:50的发言:

不厌其烦地再不好意思地问句:
....为什么我建立新的rb文件时..总是一打开就立刻关闭掉...

呃 `` 怎么可能 `` 什么编辑器呢 `` 不行直接记事本保存为.rb也可以咯..{/gg}

ps:orz这个马甲....
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-11-21
帖子
240
7
发表于 2006-12-20 18:04:41 | 只看该作者
API可以传送的参数有哪些,如果想要传些复杂的参数(如数组)该用什么方法

好像同一方法重定义多次(把RTAB多复制几份)会发生栈深度过深的错误,这是为什么

特殊方法是什么意思,有什么用处{/gg}
以下引用Melodia于2006-12-20 9:24:50的发言:

不厌其烦地再不好意思地问句:
....为什么我建立新的rb文件时..总是一打开就立刻关闭掉...

双击的话应该是被当成程序执行了……
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

8
发表于 2006-12-20 18:06:35 | 只看该作者
传数组的话……直接把数组写在参数里就行了吧……{/fd}
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

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

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

9
 楼主| 发表于 2006-12-20 18:40:52 | 只看该作者
以下引用simounF于2006-12-20 10:04:41的发言:

API可以传送的参数有哪些,如果想要传些复杂的参数(如数组)该用什么方法

好像同一方法重定义多次(把RTAB多复制几份)会发生栈深度过深的错误,这是为什么

特殊方法是什么意思,有什么用处

1、参数可以是  l i p v  分别是 长整型、整型、字符指针、空
2、
class Array
  
  alias o []
  def [](key)
    o(key)
  end
  
end
然后执行 F12,分析下为什么会出这样的错误?
3、特殊方法?指的哪些?{/gg} 列举几个看看。。
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-11-21
帖子
240
10
发表于 2006-12-20 19:00:21 | 只看该作者
就是帮助里说的特殊方法
一个测试的例子:
class A
  def $mo.test
    p '$mo'
  end
  $mo.test
end
po = A.new;pp = A.new;$mm = A.new;$mo = A.new
def po.test
  p 'po'
end
def pp.test
  p 'pp'
end
def $mm.test
  p '$mm'
end

po.test;pp.test;$mm.test;$mo.test

那个数组的例子没有出现错误{/fd}
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 10:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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