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

Project1

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

[讨论] 悟了,悟了,终于明白变量这玩意到底是啥了

[复制链接]

Lv1.梦旅人

超级囧神 无尽的灌水

梦石
0
星屑
144
在线时间
784 小时
注册时间
2010-6-27
帖子
2065
跳转到指定楼层
发表于 2013-8-25 22:17:16 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
变量啥也不是!它就是一个地址
a = 123
就是告诉你,123这个玩意存放在地址a的里面而已(不过地址在哪里就不知道了,是内存咩
所以一直以来难以弄懂的事情弄清了大半
拨云见雾啊
说来惭愧,没学好c的指针内容,所以对于x = xxx.new就弄不清为什么可以存放一个对象
而后,弄不懂属性这个东西为什么还可以继续存东西
不过现在终于懂了,属性就是一个变量,就是说它本身是一个地址
地址当然也可以作为另外一个内容(数组,变量,或者是对象)
而数组,由于c的这方面也没有学好,所以也弄混了
想通了之后自然就通了,数组就是一组为了方便而同一名字的变量(这里吐槽两句,由于没有内存地址,所以数组让我晕了许多次)
hash表只是一个方便操作的,一组变量而已
绕类绕去的脚本也不在那么绕啦!

——至于对不对,就由楼下的各位大大们pai啦

Lv1.梦旅人

梦石
0
星屑
50
在线时间
44 小时
注册时间
2014-12-23
帖子
31
10
发表于 2015-1-30 09:32:06 | 只看该作者
本帖最后由 y1072864217 于 2015-1-30 09:34 编辑

那个地址是存储在内存中的,当我们定义一个变量那个变量会与内存中的某个地址关联,然后我们进行赋值后那个值会存储到那个地址中。当程序运行结束这个程序所有的空间会被释放调允许被其他程序所使用。而变量的值是以二进制存储的,也就是以0或1存储的,1个0或1个1表示一位,8位是一个字节,1024字节是1k,1024k是1m然后网上推。楼主说的那个123最终存储到内存中是1111011也就是占7位的内存。

点评

所以,Fixnum 本身不占内存。占内存的是变量到 object_id 的引用  发表于 2015-1-30 10:39
整数是直接通过 object_id 本身进行传递的。Ruby 的 C 实现中用宏 FIX2LONG 获取 object_id 对应的整数  发表于 2015-1-30 10:38
在C语言中整形数据占的内存好像是编译器定的不是机器定的。  发表于 2015-1-30 10:01
应该没有,因此不太清楚它封装之前是什么样的。  发表于 2015-1-30 10:00
RUBY中好像没有声明整形数据类型,只声明了有整数和浮点数。  发表于 2015-1-30 09:58
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

9
发表于 2014-5-19 19:06:39 | 只看该作者
本帖最后由 IamI 于 2014-5-19 19:08 编辑

Value class & Ref class.
Ruby 这方面不清楚,为了避免被嘲笑,用托管C++(C++.Net)举例子。

Value Class,比如int(Fixnum), char, float,占用固定长度的字节,宣言的变量对应内存位置上仅有目标数值。
Value Class 在传值时,与源失去联系。
Value Class 可以被取成指针来达成别名,现代语言一般会提供一个指针封装,比如NSNumber与NSInteger,当然Ruby只有Fixnum。
Value Class 一般长度不是很长。
你可以用关键字struct来宣言一个Value Class。
仅在托管C++中,你可以用关键字value class 来宣言一个Value Class。
离开有效域,对象灭失。

Ref Class, 比如String,宣言的变量内存对应位置是一个指针(有GC的语言严格来说是句柄,或者可变指针),长度可以固定也可以变长,指向堆栈中的实际值。
现代语言中,一般不允许宣言Ref Class 的实体。Ruby 中除了Fixnum,Float,Bignum(存疑,我忘了……)以及RGSS的Rect,Color,Font(存疑)以外都是Ref Class。
这个类在传值时,依然是原来指向的对象,因为是指针传值。
这种类一般会提供一个Clone方法来获得一个Copy。
Ref Class 可以令人发指的长。
你可以用关键字class来宣言一个Ref Class。
仅在托管C++中,你可以用关键字ref class 来宣言一个Ref Class
不再有指针指向时,有GC的语言会析构对应实体。
Ruby 中只允许用class关键字宣言ref class。Struct是一个抽象类而不是关键字。
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
329
在线时间
890 小时
注册时间
2009-10-12
帖子
1829
8
发表于 2014-5-18 23:10:30 | 只看该作者
欠K罗琳 发表于 2014-5-18 16:49
弄到25积分才了解,进度实在太慢了。我6积分已经开始写脚本了。


简直无力吐槽啊。。

ok不多说ls。。。
======
从实用角度来看,变量就是为了变而存在的。数学中也有变量的应用,这才是变量的本质.基础。【因为发明变量这个东西的人一定还没用过电脑撒】

当然cs里的说的变量和数学里的变量又稍有不同~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
7
发表于 2014-3-28 19:08:19 | 只看该作者
1697665228 发表于 2014-3-28 18:05
这东东还用想?直接第一个事件设变量某某某为0或者其他,想要用这个事件调用另一个事件,比如接受任务找某 ...


歧义

LZ的意思是 变量值 保存在以 变量名 为地址 的内存中
比如 a = 11
a与其说是一个变量名 不如说是一个地址
11这个数据 保存在 a 这个地址中
之所以变量名相互之间不同 就是 给定的不同地址

有某教程挺好的 编写脚本不是梦——手把手帮你蜕变成脚本党 by RyanBern

点评

纠正一下11是已二进制储存的,计算机底层只能识别二进制。  发表于 2015-1-30 09:43
回复 支持 反对

使用道具 举报

Lv3.寻梦者

○赛

梦石
0
星屑
1249
在线时间
1276 小时
注册时间
2013-1-22
帖子
2246

贵宾

6
发表于 2014-3-28 18:14:27 | 只看该作者
1697665228 发表于 2014-3-28 18:05
这东东还用想?直接第一个事件设变量某某某为0或者其他,想要用这个事件调用另一个事件,比如接受任务找某 ...

楼主说的不是变量的用法吧……
一个变量不止是一个数字,还可以是数组、哈希、文字等……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
131
在线时间
85 小时
注册时间
2013-7-24
帖子
219
5
发表于 2014-3-28 18:05:53 | 只看该作者
这东东还用想?直接第一个事件设变量某某某为0或者其他,想要用这个事件调用另一个事件,比如接受任务找某某某谈话等,设这个变量大于这个数字,然后想调用就一直调用呗。
LZ没上过课吗……
终于放假了,正在尝试肝出一款新游戏
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
1
星屑
6651
在线时间
2650 小时
注册时间
2013-8-23
帖子
2315

开拓者

4
发表于 2013-8-27 22:15:09 | 只看该作者
变量就是会变的量嘛...

你赋值给他他就是什么

不赋值就是空的

点评

没赋值是空的那是编译器定的,没赋值的变量会使用一个垃圾值,这个值是以前程序使用的,因为程序结束后会释放所占的空间而不会清除里面的值。  发表于 2015-1-30 09:41
那常量不就是···  发表于 2014-11-9 13:17
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
704 小时
注册时间
2011-12-27
帖子
941
3
发表于 2013-8-27 20:40:07 手机端发表。 | 只看该作者
數學正常也會在函數的一課教上變量……LZ沒有上課麼……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
1083 小时
注册时间
2013-3-29
帖子
2394
2
发表于 2013-8-27 17:07:29 | 只看该作者
其实的确不用想怎么乱七八糟的东西,简单的说变量就是一个可以在游戏里变动的数值。
可以变成糖果的持有数量,可以变成史莱姆的杀死量等。

坑的进度如上                                                                                                        点击↑
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
1
发表于 2013-8-25 22:32:39 | 只看该作者
听起来貌似没啥问题= =感觉LZ想太多,没必要先去弄懂这些乱七八糟的逻辑……

评分

参与人数 1星屑 +8 收起 理由
a554187203 + 8 很在意rmxp的变量,可存储的东西太奇怪了,.

查看全部评分

我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 01:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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