RUBY一些基础知识

 1.print不自动换行,puts会自动换行,一行不够写的话,可以加""进行连接   ruby 代码 puts 6/2 print 6/1 puts 'hello world' puts '我们都是' '中国人'    运行结果:   ruby 代码 3 6hello world 我们都是中国人    2.==,eql?,equal? 区别   ==值相等 eql?值相等,类型相等 equal?值相等,内存地址相等 a=1 b=1.0 c=1.0 d=1.0 e=c puts(a==b)#值相等 puts(a.eql?(b)) #值相等,类型相等 puts(c.equal?(d))#值相等,内存地址相等 puts(c.equal?(e))    运行结果:   ruby 代码 true false false true    3. #<=>比较2个对象的大小,大于,等于,小于分别返回1,0,-1   #===右边对象是否在左边区域里,返回true或false   ruby 代码 puts("abd" <=> "acd") puts((0..5) === 10) puts((0..5) === 3.2)   运行结果: -1 false true   4.case 分支条件语句 x=3 case x when 1..2 print "x=",x,",在1..2中" when 4..9,0 print "x=",x,",在4..9,0中" else print "x=",x,",其它可能" end 输出结果: x=3,其它可能   5.while与until   注:   A:ruby里的字符串连接用的是逗号(java里用的是加号),如:   puts("aaa","bbb")   print("aaa","bbb")   分别输出为aaa换行bbb,aaabbb   B:ruby里好像没有++,所以a++是错误的,只能a=a+1   ruby 代码 a=1 while( a < 10 ) print(a," ") a=a+1 end b=1 until( b >= 10 ) print(b," ") b=b+1 end 输出结果为: 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9   6. 几个函数说明   print "aa" if i < 2   等价于   if i < 2   print "aa"   end   ruby 代码 3.times{print "hi"} 1.upto(9){|i| print i if i<7>#|i|可以看成是一个临时的引用变量,供后面使用 9.downto(1){|i| print i if i<7> (1..9).each{|i| print i if i<7> 0.step(11,3){|i| print i} 运行结果: hihihi123456654321123456036   1. 等价语句   单引号里是什么就是什么,会照着输出。   ruby 代码 a=5 b="hhhh" print("a is ",a," ") puts("a is #{a}") puts('a is #{a}') 输出结果: a is 5 a is 5 a is #{a}   2. #ruby中如果一个类里有2个同名方法,总是后面的一个被执行   ruby 代码 #ruby支持缺省参数 def sum(a,b=5) a+b end puts sum(3,6) #输出结果为:9 puts sum(3)#输出结果为8 #ruby支持可变参数 def sum(*num) numSum = 0 num.each{|i| numSum += i} return numSum end puts sum() #输出结果为0 puts sum(3,6)#输出结果为9 puts sum(1,2,3,4,5,6,7,8,9)#输出结果为45   3. ruby中的实例变量,类变量,类方法   实例变量:每个实例独享,变量名用@开头   类变量:所有实例共享,变量名用@@开头,类似java里的static变量,但是在使用前必须要初始化。   类方法:不需要通过实例对象来调用。类方法定义方式: 类名.方法名,如:   ruby 代码 def StudentClass.student_count puts "aaa" end   如果在外部调用一个类里的常量,需要用到域作用符号"::"   4.ruby里的单例方法:给具体的某个实例对象添加方法,这个方法只属于这个实例对象的。这样的方法叫单例方法   定义单例方法,首先要生成一个实例对象,其次要在方法名前加上一个对象名和一个点号(.)   如:   ruby 代码 class Person def talk puts "hi!" end end p1 = Person.new p2 = Person.new def p2.talk #定义单例方法p2.talk puts "Here is p2." end def p2.laugh puts "ha,ha,ha..." end p1.talk p2.talk p2.laugh 输出结果为: hi! Here is p2. ha,ha,ha...   5.访问控制   ruby 代码   #访问控制   #public , protected, private   #public 方法,可以被定义它的类和其子类访问,可以被类和其子类的实例对象调用   #protected 方法,可以被定义它的类和其子类访问,不能被类和其子类的实例对象调用,但是 可以在类和其子类中制定给实例对象   #private 方法,可以被定义它的类和其子类访问,不能被类和其子类的实例对象调用,私有方法不能指定对象 #访问控制 #public , protected, private #public 方法,可以被定义它的类和其子类访问,可以被类和其子类的实例对象调用 #protected 方法,可以被定义它的类和其子类访问,不能被类和其子类的实例对象调用,但是 可以在类和其子类中制定给实例对象 #private 方法,可以被定义它的类和其子类访问,不能被类和其子类的实例对象调用,私有方法不能指定对象 class Person public def talk puts "public:talk" end def speak "protected:speak" end def laugh "private:laugh" end protected :speak private :laugh def useLaughTest(another) puts another.laugh #这里错误,私有方法不能指定对象 end def useSpeakTest(another) puts another.speak #这里可以,,protected方法可以指定对象 end end class Student < Person def useLaugh puts laugh end def useSpeak puts speak end end p1 = Person.new p1.talk #p1.speak 实例对象不能访问protected方法 #p1.laugh 实例对象不能访问private方法 p2 = Student.new p2.useLaugh p2.useSpeak     输出结果为:   public:talk   private:laugh   protected:speak

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值