Project1

标题: def item=(item) 这样的函数定义是什么意思? [打印本页]

作者: wangswz    时间: 2010-8-26 21:50
标题: def item=(item) 这样的函数定义是什么意思?
本帖最后由 wangswz 于 2010-8-26 22:22 编辑

  def item=(item)
    if @item != item
      @item = item
      refresh
    end
  end
貌似是在商店窗口中为获取当前选取物品的一个传递参数的函数
可是def部分看不懂..  item=(item)?
作者: 小幽的马甲    时间: 2010-8-26 22:02
一个外部更改item的接口,括号可省略
作者: 八云紫    时间: 2010-8-26 22:09
class A
   def initialize
     @aa = 1;
   end
end

a = A.new
p a.aa #=> error

--------------------------------------------

class A
   def initialize
     @aa = 1;
   end
   def aa
     return @aa;
  end
end
a = A.new
p a.aa  #=> 1
p a.aa()  #=> 1
a.aa = 2 #=> error

--------------------------------------------

class A
   def initialize
     @aa = 1;
   end
   def aa=(index)
     @aa = index;
  end
end
a = A.new
p a.aa  #=> error
a.aa = 2 #=> @aa = 2 <=> a.aa=(2)
作者: trentswd    时间: 2010-8-27 02:38
def xxx相当于设置了只读属性attr_reader
def xxx加上def xxx= 相当于设置了可写属性attr_accessor

作者: DeathKing    时间: 2010-8-27 08:32
和元编程一个道理,不过这里面涉及到了一个俗称的约定(不一定要遵守)
以=号结尾的方法通常是setter,会为同名实变量设定值;
以?号结尾的方法返回的是一个所谓的布林值,也就是true或者false;
以!号结尾的方法表示该方法具有破坏性,所以要小心操作。


所以不必要去过分纠结方法中的=号,只要方法名合法就行了。




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