Project1

标题: 关于RGSS3的几个问题 [打印本页]

作者: 只是逛逛    时间: 2015-2-15 12:36
标题: 关于RGSS3的几个问题
先附上代码:
RUBY 代码复制
  1. def p(m)
  2.   msgbox(m)
  3. end
  4.  
  5. class A
  6.   def initialize(name,age)
  7.     @name = name
  8.     @age = age
  9.   end
  10.  
  11.   def name
  12.     @name
  13.   end
  14.  
  15.   def age
  16.     @age
  17.   end
  18.  
  19.   def name=(new_name)
  20.     @name = new_name
  21.   end
  22.  
  23.   def age=(new_age)
  24.     @age = new_age
  25.   end
  26. end
  27.  
  28. a = A.new('RC','⑨')
  29. p a.name
  30. p a.age
  31.  
  32. a.name = 'dora'
  33. a.age = 12
  34. p a.name
  35. p a.age


1.实例变量到底是什么鬼,是不是相当于普通的变量,只不过只能在类里面用
2.class A 里的 def name=(new_name) 、 def age=(new_age)是什么意思,能否用其他方法替代
作者: 喵呜喵5    时间: 2015-2-15 13:40
本帖最后由 喵呜喵5 于 2015-2-15 14:00 编辑

1.实例变量和普通变量的区别:
  1. class A
  2.   def initialize(name,age)
  3.     @name = name
  4.     ages = age
  5.   end
  6.   def name
  7.     @name
  8.   end
  9.   def age
  10.     ages
  11.   end
  12. end

  13. a = A.new('RC','⑨')
  14. p a.name # => RC
  15. p a.age # => 报错
复制代码
你自己感受一下……

2. def name=(new_name) 、 def age=(new_age) 和其他def 一样,讨厌啦名字里多了一个等号你就不认识人家了嘛(*´∀`)

受不了面向对象的思考方式的话你完全可以把它们换成其他的东西,比如把 def name=(new_name) 换成 def happy_new_year(new_name)

但是,你觉得
  1. @主角.name = '埃里克'
复制代码
  1. @主角.happy_new_year('埃里克')
复制代码
哪个看得更舒服一些呢?

作者: 三途亚梦    时间: 2015-2-15 13:41
实例变量就是每个实例的变量啊。
就像人物的hp因为每个人物实例不同而不同。

实例变量有只读、只写、可读可写三种形式,name=就是让只读的变得可写。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1