- 浏览: 32781 次
- 性别:
- 来自: 北京
最新评论
-
BIAOBIAOqi:
感谢lz。有一个小错误~解法1里,代码最后一行的注释有问题。p ...
ruby元编程 那些书里没有的知识 define_method -
Spirit890903:
终于成功了,这种技术叫做 动态派发技术,常用在Method_m ...
ruby元编程 那些书里没有的知识 define_method -
superheizai:
我是新人,驻留在看书阶段的新人,所以我要说错了,请不要怪我。对 ...
ruby的字符串性能到底如何最佳 -
superheizai:
学习了。我觉得写得不错,练练手,挺好的。
ruby实现删除自定义后缀名文件Find -
witcheryne:
写成工具witcheryne 写道这么麻烦么??rm -rf ...
ruby实现删除自定义后缀名文件Find
文章列表
你有多少种方式创建一个方法?大多数人想到的可能是def 关键字
#普通方法
def tele_you
puts "I am Anleb"
end
#定义单件方法
n="Anleb"
def n.tell_you
puts "I am #{self}"
end
n.tell_you
#define_method
class Project
define_method :tell_you do |name|
puts name
end
end
a= ...
class Fixnum
attr_accessor :value
end
x=1
p x.object_id
x.value="Anleb"
p x.value.object_id
def change(x)
p x.object_id
p x.value.object_id
#x=2
x.value="Mr.w"
p x.object_id
p x.value.object_id
end
change x
p x
p x.value
p x ...
class A
@@var=1
@class_var="class var"
attr_accessor :object_var,:object_var2
class << self
attr_accessor :class_var
def a_method1
end
end
def A.a_method2
end
def self.a_method3
end
def a ...
1.先看私有方法能否被继承
class A
@@name="Anleb"
def ask
puts @@name
end
private :ask
end
a=A.new
#a.ask
a.send(:ask)
class B < A
end
b=B.new
#b.ask
b.send(:ask)
结论:对于private方法,是被继承的,类变量(类似于静态变量,属于所有实例),也是可以被继承的。
2.看类的方法能否被继承
题外话:private影响谁?
cl ...
主要是交流,水平有限,喜欢研究,多多包涵。
先说一个数组循环问题
arr=[1,2,3]
n=arr << arr
p n
输出:
[1, 2, 3, [...]]
分析:
<< 传进去的是一个arr指针 # =>[1,2,3,arr]
其实这是一个循环,真实的值是:[1,2,3,[1,2,3,[1,2,3,[1,2,3,........]]]
arr[3]=arr
arr[3][3]=arr
ruby数组比较常用的方法:
1.at方法
arr=[1,2,3]
p arr.at(2)
p arr[2]
其实:at比[]方法要效率一点,因为它不接 ...
1.先看字符串的object_id
str1="Anleb"
str2="Anleb"
puts str1.object_id
puts str2.object_id
输出:
22952500
22952490
id不同说明,虽然对象的值一样,但是他们是不同的东西,什么是不同的东西,也就是指针不同。
str1指针----> 对象
str2指针----> 对象
题外话:不像咱们的c#、java有字符串驻留技术,ruby没有驻留技术的String对象,但是有驻留技术的Fixnum,false,true,不信,我实验给你看:
s1=fals ...
class A
def self.ask1
puts "the method of class"
end
def ask2
puts "the method of instance"
end
end
#类的实例对象的方法,方法属于类所生成New出来的实例对象。
p a.methods.length
p a.class.instance_methods.length
p A.instance_methods.length
p a.public_methods.leng ...