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

Project1

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

[已经过期] rgss中的def的意义到底是什么?为什么一定要用def呢

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2349
在线时间
568 小时
注册时间
2012-5-3
帖子
86

开拓者

跳转到指定楼层
1
发表于 2018-4-30 15:30:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
我有一个疑问。为什么rm游戏脚本里面的脚本每实现一段效果,必须要用def...end呢?比如初始化initialize,比如refresh,比如update。甚至有些人写的一些其他的东西,都必须在def..end里面写呢?比如我的窗口需要刷新,为什么不能直接update,一定要def...end里面,大概这个意思吧。

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

8
发表于 2018-5-1 00:43:12 | 只看该作者
define的缩写呗···但是提到这个就要去看看C语言了···
有些东西其实只是作者的恶趣味而已,比如Dota2里面炸弹人的25级天赋为什么会有一个攻击力+251,只是作者在玩梗···

评分

参与人数 1星屑 -1 收起 理由
RyanBern -1 除了第一句话以外有误导倾向

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4598
在线时间
1206 小时
注册时间
2016-4-7
帖子
982

开拓者

7
发表于 2018-4-30 23:15:59 | 只看该作者
本帖最后由 shitake 于 2018-5-1 14:34 编辑

因为 matz 说了 你得这么写 所以大家都得这么写

不过我想知道在楼主的想法里,你是如何告诉电脑你这里写的是什么呢,总不是对着rgss player大喊:“看!这是我的刷新函数!”


@RyanBern 喵喵喵?
第一句指明编程语言中的特定写法是因为语言设计者所做的统一约定,这算是说明最直接的意义了吧。第二句反问是想讲pl里为什么需要这种约定,这算是深层的意义了吧?至于为啥不直接讲而是一个反问,我总得看看提问的人是什么知识储备,才好把这个东西展开讲吧?怎么就不相关了?

评分

参与人数 1星屑 -1 收起 理由
RyanBern -1 回答与问题并无明显关联

查看全部评分

附庸的附庸不是我的附庸,女儿的女儿还是我的女儿。CK2沉迷ing
回复 支持 0 反对 1

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

6
发表于 2018-4-30 18:13:28 | 只看该作者
DEF是方法
你可以把每个DEF都看成是一套功夫
有多少DEF就有多少套功夫。
你本来要    A = 0 这样一招一招来放
你可以把他们写成一套功夫,一次性放出来。
左右左右ABAB
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8064
在线时间
1862 小时
注册时间
2017-10-23
帖子
355
5
发表于 2018-4-30 17:31:01 | 只看该作者
defind 定义
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23999
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

4
发表于 2018-4-30 16:22:21 | 只看该作者
  1. def 方法名 方法内容
复制代码
def 是方法的定义,告诉ruby当这个方法名出现在代码里的时候,执行此方法的内容。ruby会按照一定的规律去寻找同名方法,只要找到了一个就会执行方法内容,否则执行方法 method_missing,这个也没有的话就报错,Undefined method for `x'

点评

其实undefined method这个异常提示,是继承链上最原始的那个method_missing的默认行为。如果这个method_missing被改了,你可能报错的机会都没有  发表于 2018-5-1 13:51
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
3
发表于 2018-4-30 16:07:54 | 只看该作者
def简单的说就是定义方法。
就比如定义我这个id。
def angle
p "夕露"
end
然后这个方法就可以被调用了。
如:a.angle
没有被def的方法名可不能被调用哦。
调用就是找不到该方法的。
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39034
在线时间
5725 小时
注册时间
2006-11-10
帖子
6622
2
发表于 2018-4-30 16:00:46 | 只看该作者
本帖最后由 灯笼菜刀王 于 2018-4-30 16:07 编辑

  不用def也是可以的,比如 attr_accessor

def是用来表示身份的,比如说,你说你是你,谁能证明?你说你是你,他说你是他,她说你是她,谁又知道你是哪个你?

所以呢,你需要一个能表明身份的东西出来,

def 邱小谦
  return 你
end

这样,你说你是邱小谦,那大家都知道是你了, 不会把那边的 海大富 认成你,也不会把这边的 山中狼 认成你

但是呢,你在这里说你是邱小谦,大家认得, 到外面说,人家可不知道了,百度一搜邱小谦,一大堆,哪个邱小谦又是你啊?

所以,如果再多个定义

class P1
  def 邱小谦
    return 你
  end
end

OK, 只要 你这样说   

这里 = P1.new
这里.邱小谦

这样大家就知道,你是P1里的邱小谦了。 百度.邱小谦 就不是你了

但是P1这么大,谁又知道你在P1哪里混的

所以,在来一个

class XP区 < P1
  def 邱小谦
    return 你
  end
end

这样, XP区可以找到你 邱小谦  ,P1也能找到你 邱小谦 了
回复 支持 2 反对 0

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-1 00:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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