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

Project1

 找回密码
 注册会员
搜索

为何像“+”这样的RGSS3内部语言也会未定义?

查看数: 1981 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-4-15 13:28

正文摘要:

本帖最后由 饿啊 于 2016-4-15 13:30 编辑 本人多日来的疑问,在学会一点点RGSS3后竟然彻底懵逼了——这种RGSS3内部语言会有这种错误...谁能答疑一下? (如下脚本和错误来自于VA图书馆的CP战斗系统,我原先也问 ...

回复

shitake 发表于 2016-4-15 20:41:42
本帖最后由 shitake 于 2016-4-15 22:46 编辑


@taroxd

就我个人的理解来看,应该是  .& 或者直接写 &。而 &. 应该是个不怎么正确的写法。
. 在ruby里通常表示方法的调用,写作.& 是和 .+ 这样差不多的写法【ruby里实际上是不存在运算符的,所有的运算符本质上都应该是以特殊符号为方法名的拟态方法】
那么 &. 这样的写法怎么来的呢,举个例子:
  1. a = []
  2. a&.each{ |i| p i }
复制代码
而这里实际上应该是先 .& 然后在 .each,这个 . 应该是和其后边的方法连在一起的 。
不过这也不一定说明我是对的,应为在cruby 2.3.0 的环境下,我尝试写 a.&.each{ |i| p i } 会报错。囧
另外,通过调用 methods 方法,发现在常用的类里面,只有 String、Numerc、Array、NilClass、TrueClass、FalseClass、MatchData 这几个类的实例里有 .& 这个方法。

恩,我去查了下最先看到这个的出处
然后发现除了这里,其他提到孤寂运算符的地方都是写做 &. 貌似是这篇翻译的问题(其他语言的版本里也是 &. 囧)
另外看这篇 Matz 开始也是考虑过 .& 这样的,貌似还纠结过使用 ?  还是 & 。

点评

代码里面叫ANDDOT, 至于是什么代码,当然是CRuby2.4的C语言源代码  发表于 2016-4-16 10:29
&. 是语法而不是方法  发表于 2016-4-15 22:03
&.跟&不是一回事,你个人理解没包含进新的情况  发表于 2016-4-15 21:46
丿梁丶小柒 发表于 2016-4-15 18:58:37
在给一个很容易懂的解释。

虽然是内定好的class但是也是可以报错的。

提个简单的例子把,比如调用这个类的时候需要传入数字的参数进去才能正常运行。

但是你给他传入了非数字类型进去肯定会报错的啊。
cinderelmini 发表于 2016-4-15 15:05:50
本帖最后由 cinderelmini 于 2016-4-15 15:08 编辑

不是方法没定义,然后运算方法是定义给特定对象(数字,数组,字符什么的)的,
然后弹这个未定义运算符号方法的问题就是前面要运算的变量并不是能运算的对象,
所以会有这种问题……

举个栗子的话……
乃可以跟一个人说人类的语言,然后对面能懂,
但是也可以跟一只喵说人类的语言,然而它不懂……
人类的语言是已经定义了的方法,但是对象不一样。

点评

我记得是 &. 吧,而且 &. 也不是这么用的  发表于 2016-4-15 19:38
To:miaowm5 某个曾说离开再也不回来的家伙,不好意思用老马甲就只能申请个新的了 以及喵呜女神大法好,喵呜女神赛高~  发表于 2016-4-15 19:01
想了半天 shitake 到底是哪个触的马甲……  发表于 2016-4-15 18:36
好吧我算是明白了,多谢诸位能够再次帮忙.... 看来还是我没有学通透...  发表于 2016-4-15 18:30
然而这种情况基本上都是出现再 undefined method ‘+’ for NilClass 上,以至在ruby2.3.0里多了个孤寂运算符(.&)  发表于 2016-4-15 16:20
喵呜喵5 发表于 2016-4-15 14:05:56
本帖最后由 喵呜喵5 于 2016-4-15 14:06 编辑

道理其实很简单:
你问电脑 一张白纸 + 数字1 等于多少,电脑说不知道,你可以理解
为什么你问电脑 一个不是数字的东西 + 一个数字 等于多少,电脑说不知道,你却很奇怪呢?
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-2-22 15:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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