ruby基础

[quote]
if __FILE__ == $0
# TODO Generated stub
class Person
def initialize(name,age=18) #initialize是初始化方法,相当于java的构造器
@name=name
@age=age
@motherland="China"

end #初始化方法结束
def talk
puts "my name is "+@name+",age is "+@age.to_s #@age.to_s的含义是:将数@age转换为字符串
if @motherland =="China"
puts "I am a chinese."
else
puts "I am a foreigner."
end
end #talk方法结束

# attr_reader: 实例变量只读

# attr_writer: 实例变量可写

# attr_accessor: 变量可读可写

attr_writer:motherland
#attr_writer:motherland相当于def motherland=(value) return @motherland=value end
#attr_reader:motherland相当于def motherland return @motherland end
# attr_accessor:motherland
end #person类结束

#在Ruby中模块定义:module
# 类定义:class
# 方法定义:def undef
# 检查类型:defined?
p1=Person.new("hefeng",24)
p1.talk
p2=Person.new("Ben")
p2.motherland="ABC"
p2.talk

class Student <Person #用"<"表示Student类是Person类的子类
def talk
puts "I am a student.my name is "+@name+",age is "+@age.to_s
end #talk 方法结束
end
p3=Student.new("ChZh", 27);
p3.talk
p4=Student.new("Tom");
p4.talk
#常量全用大写的字母,用下划线分割单词.例如:MAX,ARRAY_LENGTH.
#类名和模块名用大写字母开头的单词组合而成.Eg:MyClass.Person
#变量和参数用小写字母开头的单词组合而成.Eg:name currentValue
#方法名全用小写的字母,用下划线分割单词.Eg:talk,is_prime?.在Ruby里,有时将"!"和"?"附于某些方法名的后面.
#惊叹号"!"暗示这个方法具有破坏性,有可能会改变传入的参数.
#"?"表示这个方法是一个布尔方法,只会返回true或false



end
#可变参数方法
def sum(*num)
numSum = 0
num.each{|i|numSum+=i}
return numSum
end
puts sum()
puts sum(3,6)
puts sum(1,2,3,4,5,6,7,8,9)

#Ruby中要使用域作用符::
# 全局变量用$开头
# 实例变量,变量名用@开头
# 变量名用@@开头

class StudentClass
#变量
@@count=0
def initialize(name)
@name = name
@@count+=1
end
def talk
puts"I am #@name,This class have #@@count students."
end
end
p1 = StudentClass.new("Student 1")
p2 = StudentClass.new("Student 2")
p3 = StudentClass.new("Student 3")
p4 = StudentClass.new("Student 4")
p1.talk

class StudentClass
#变量
@@count=0
#类方法
def initialize
@@count+=1
end
def StudentClass.student_count
puts"This class have #@@count students."
end
end
p1 = StudentClass.new
p2 = StudentClass.new
p3 = StudentClass.new
p4 = StudentClass.new
StudentClass.student_count

#单例方法也叫单件方法.定义单例方法,首先要生成一个实例对象,其次要在方法名前加上对象名和一个点号"."
class Ps
def talk
puts "Hi!"
end
end
p1 = Ps.new
B2 = Ps.new

def B2.talk
puts "Here is SB"
end

p1.talk
B2.talk
#模块:在程序中,相关的,不相关的代码的组合,叫作模块 模块名.方法名(参数)
arr=[3,4,5,6,7,8,9]
puts arr[0]
puts arr.first
puts arr[arr.length-1]
puts arr[arr.size-1]
puts arr[-2]
#Ruby的数组大小是动态,
#数组的索引从0开始,一直到数组的长度减1;负数表示从数组末尾开始的索引;用一对数字索引数组,
#第一个数字表示开始位置,第二个数字表示从开始位置起的元素数目
arr=[4,5,6]
#打印数组集合
print arr.join(","),"\n"
#把4号索引位置元素赋值为"m"
arr[4]="m"
print arr.join(","),"\n"
#打印3号索引
print arr[3],"\n" #3号索引为空!!!
arr.delete_at(3) #删除3号索引位置元素
print arr.join(","),"\n"
arr[2]=["a","b","c"] #把2号索引位置元素赋值为["a","b","c"]
arr[0..1]=[7,"h","b"] #把0..1号元素替换为7,"h","b"
arr.push("b") #加入元素"b"
arr.delete(["a","b","c"])#删除元素["a","b","c"]
arr.delete("b")#删除所有元素"b"
arr.insert(3,"d")#在3号索引位置插入元素"d"
arr<<"f"<<2 #加入元素"f";加入元素2
arr.pop #删除尾元素
arr.shift #删除首元素
arr.clear #清空数组arr

if __FILE__ == $0
# TODO Generated stub
#数组运算
aaaa=["aa",4,5,"bb"]
bbbb=[4,1,3,2,5]
print aaaa*2, "\n"
print bbbb-aaaa ,"\n"
print aaaa | bbbb ,"\n"#并运算 aa 45 bb 132
print aaaa & bbbb ,"\n"#交运算45
print bbbb.sort ,"\n"#排序
print aaaa.reverse ,"\n"#倒置
#%q用来生成单引号字符串;%Q用来生成双引号字符串.%q或者%Q后面跟着的是分隔符.
str ="Hello,kaichuan, Welcome!"
puts str=~/a/
#匹配一个正则表达式用"=~"
#匹配一个正则表达式用"!~"
#块可以接收yield传来的参数
def do_something
yield #块
end
do_something do
(1..9).each{|i| print i if i<5}
puts
end
do_something do
3.times{print "Hi"}
puts
end
end

#数组迭代器
class Array
def one_by_one
for i in 0...size
yield(self[i])
end
puts
end
end
arr=[1,3,5,7]
arr.one_by_one{|k| print k, " ,"}
arr.one_by_one{|h| print h*h, " ,"}
if __FILE__ == $0
# TODO Generated stub
#求50内的素数
for i in 2..50
f=true
for p in 2...i
if i%p==0 #如果能整除
f=!f #那么这个数不是素数
break
end
end
print i," " if f #如果这个数保持起始假定,则打印
end
print "\n"
# times upto downto each step
3.times{print "Hi!"}
1.upto(9){|i|print i if i<7}
9.downto(1){|i| print i if i<7}
(1..9).each{|i|print i if i<7}
0.step(11,3){|i|print 1}

#在 ruby 中用begin/end rescue ensure raise 来处理异常,在ruby可以用在rescue中,
#可以只用rescue或是ensure,两者都使用时,rescue必须在ensure前
end


[/quote]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值