def initialize(name)
@name = name
end
attr_reader :name
attr_writer :name
end
test = Test.("AAA")
puts test.name
test.name = "BBB"
puts test.name
如果不使用这2个关键字则按照Java风格这样写
Test
def initialize(name)
@name = name
end
def getName
@name
end
def Name(name)
@name = name
end
end
test = Test.("AAA")
test.Name("BBB")
puts test.getName
注意:getName思路方法中是可以省去
2.类变量和类思路方法
Song
@@count = 0
def initialize
@count = 0
end
def play
@count = @count + 1
@@count = @@count + 1
puts "This song #@count plays. Total #@@count plays."
end
end
s1 = Song.
s2 = Song.
s1.play
s2.play
s1.play
s1.play
类思路方法:
Song
@@count = 0
def Song.TotalCount
@@count
end
end
s1 = Song.
puts Song.TotalCount
实现单例模式(Singleton)
Song
private__method :
@@name = nil
def Song.create
@@name = unless @@name
@@name
end
end
song = Song.create
3.和散列表:
Test
a = ['ant', 'bee', 'cat', 'dog']
puts a[0]
b = %w{ ant bee cat dog }
puts b[2]
c = {
'a' => 'ant',
'b' => 'bee',
'c' => 'cat',
'd' => 'dog'
}
puts c['d']
d = Hash.
d['a'] = 'ant'
d['b'] = 'bee'
d['c'] = 'cat'
d['d'] = 'dog'
puts d.length
end
4.ruby中变量不是对象只是引用 Test
person1 = "Tim"
person2 = person1
person1[0] = 'J'
puts person1
puts person2
end
旦改变person1值person2也会跟随改变
但是下面代码情况就不样了
Test
person1 = "Tim"
person2 = person1.dup
person1[0] = 'J'
puts person1
puts person2
end
我们还可以使用freeze思路方法冻结个对象下面代码运行会报错
Test
person1 = "Tim"
person2 = person1
person1.freeze
person1[0] = 'J'
puts person1
puts person2
end
5.ruby思路方法作用域
http://www.javaeye.com/topic/76855
最新评论