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

Project1

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

[已经解决] 类变量相比全局变量有什么优点和缺点?

[复制链接]

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21686
在线时间
9420 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

跳转到指定楼层
1
发表于 2013-11-7 17:32:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
对于类变量的使用目前一知半解所以想问问,相比全局变量,类变量有什么优点?又有什么缺点?啊,使用前必须预先定义那个不算……

Lv2.观梦者

梦石
0
星屑
620
在线时间
925 小时
注册时间
2011-5-11
帖子
438
2
发表于 2013-11-7 18:00:42 | 只看该作者
全局变量一般用来定义一个常量,方便在各个类中引用,也方便修改,不过有要适可而止.在一个工程中不要定义太多,那样会很零乱.
局部变量很少用于定义常量,方便在各个类中即使同名也量不同,便于理解脚本意思.在调用里就显得有点局限性!

评分

参与人数 2星屑 +96 收起 理由
熊喵酱 + 66 感谢帮忙
喵呜喵5 + 30 感谢帮忙

查看全部评分

http://rpg.blue/static/image/smiley/yct/A059.gif中国字认识都不到一半,哪的心情学英语呀!
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21686
在线时间
9420 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

3
 楼主| 发表于 2013-11-7 18:05:26 | 只看该作者
345912390 发表于 2013-11-7 18:00
全局变量一般用来定义一个常量,方便在各个类中引用,也方便修改,不过有要适可而止.在一个工程中不 ...

既然如此的话实例变量和全局变量就够用了啊,为什么还需要一个类变量呢?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
560
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
4
发表于 2013-11-7 19:26:41 | 只看该作者
实例变量是在每一个实例中,而类变量和全局变量差不多,但是作用域不同。类变量作用域较小。

评分

参与人数 2星屑 +96 收起 理由
熊喵酱 + 66 感谢帮忙
喵呜喵5 + 30 感谢帮忙

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21686
在线时间
9420 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

5
 楼主| 发表于 2013-11-7 20:01:57 | 只看该作者
satgo1546 发表于 2013-11-7 19:26
实例变量是在每一个实例中,而类变量和全局变量差不多,但是作用域不同。类变量作用域较小。 ...

既然如此的话为什么要使用类变量呢?既然全局变量和类变量差不多的话……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
158 小时
注册时间
2008-4-12
帖子
43
6
发表于 2013-11-7 23:40:38 | 只看该作者
本帖最后由 魔潘安 于 2013-11-7 23:41 编辑

【全局變量】在任何地方可以呼叫的到
雖然權限很大,但也要謹慎使用
因為變量名稱不可以相同
有可能你的程式碼有這個名稱
我的程式碼也剛好有這個名稱
那麼我們的程式碼就會起衝突
故全局變量越少,衝突的機會越小

【類別變量】只有該類別可以呼叫(而且僅有一個!?)
該類別不管實作幾次
每個實體都共用這個類別變量

【實例變量】是每當類別被實作的時候就會賦予實體一個
每個實體都有一個相同名稱的該變量
但是分開儲存的
不會互相影響

【區域變量】則是在該區域中才能存活
生命週期很短
用來暫時性帶入某些值去運算
可以有效簡潔程式碼

每種變量都有它的特性
當然只用全局和區域變量也可以寫出程式碼
只是把適合的變量放在適合的位置會更好
這點等到你寫的熟練了就會自然體悟

以上是個人見解...
有錯的話,還請海涵...

评分

参与人数 2星屑 +96 收起 理由
熊喵酱 + 66 感谢帮忙
喵呜喵5 + 30 感谢帮忙

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21686
在线时间
9420 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

7
 楼主| 发表于 2013-11-8 00:01:35 | 只看该作者
魔潘安 发表于 2013-11-7 23:40
【全局變量】在任何地方可以呼叫的到
雖然權限很大,但也要謹慎使用
因為變量名稱不可以相同

那么相比全局变量类变量有什么优势吗?
你的说明中说全局变量的缺点是名称不能重复
相同的类的类变量名称可以相同么?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
158 小时
注册时间
2008-4-12
帖子
43
8
发表于 2013-11-8 00:45:32 | 只看该作者
全局變量的優勢在於任何地方都可以呼叫的到
同樣的也是他的缺點「唯一性」
整個程式架構中就只能有這麼一個名稱
不然他不知道你想要呼叫誰

而類別變量顧名思義就是指在該類別生存
這個類別中可以有一個叫做「喵呜喵5」的變量
另一個類別中也可以有一個叫「喵呜喵5」的變量
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21686
在线时间
9420 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

9
 楼主| 发表于 2013-11-8 01:48:55 | 只看该作者
@魔潘安
就是说类变量的唯一优势就是没那么容易重复咯?
那么类变量完全没有意义啊,全局变量遵循一定原则命名的话同样基本不会发生重复的情况,比如 $喵呜喵5_当天的日期_变量名 这样……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
158 小时
注册时间
2008-4-12
帖子
43
10
发表于 2013-11-8 02:59:29 | 只看该作者
本帖最后由 魔潘安 于 2013-11-8 03:02 编辑

嗯~~你要這麼說也是可以的~~
但變數命名通常還是以清楚扼要的描述會比較好
這樣別人看你的程式碼便能一看就懂
(當然我知道你只是舉例)

我一開始是學 Java 語言的
在 Java 中沒有像 Ruby 一樣有這麼方便的全局變量可以使用
所以有些東西是必須仰賴類別變量的

至於 Ruby 我懂得沒有你多 (我還借用了你的某些腳本呢!!)
所以我也不知道怎麼比較出兩者個使用時機
(我沒寫過甚麼大型的程式碼,所以經驗沒那麼豐富)
只知道規則要越嚴謹越好

哈~很抱歉沒解決你的疑惑~
讓我們等待其他高手來為我們解答吧!!


PS. 屍體未命名 很棒的解謎遊戲!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 15:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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