Ruby 学习笔记
Roby 学习笔记1>:关于类class MyFir # 继承的方式是 MyFir < MyParentFir# To change this template use File | Settings | File Templates. def initialize(name,co = 'xxxxx') # 参数可设置默认值,当有默认值的时候可以不传入数 据,如果传入了,则覆盖默认 @name = name @co = co end @co #实例变量使用@开头,$是静态常量开头字母 @@是类变量的标识符@name def showMe p "name=#{@name} \r\n, co = #{@co}" #注意这里的转义符,在输出的时候是不会被转义 的,而是当做字符串原样输出,#后的大括号是可以省略的... #print "name=#{@name} , co = #{@co}" #print "fdsafdsa" , @co," name = ",@name # 链接字符串使用 + 或者,打印的时候使用 逗号分隔end end f = MyFir.new("gggggggggggg")f.showMe() p,print,puts的区别共同点:都是用来屏幕输出的。不同点:puts 输出内容后,会自动换行(如果内容参数为空,则仅输出一个换行符号);另外如果内容参 数中有转义符,输出时将先处理转义再输出p 基本与puts相同,但不会处理参数中的转义符号print 基本与puts相同,但输出内容后,不会自动在结尾加上换行符 2>:函数调用X.new() 可以是 X.new,这样就可以省略括号如果有参数,则X.new('arg1','arg2') 可以是 X.new 'arg1','arg2' 3>:Ruby具备和js相似的动态性:比如:class X{....} x = X.new x.showName # 暂定是xxxxx class X{ ... do some other thing ..} x.showName # 就会使用后面的定义实现,而不需要重新X.new这也就是动态(脚本)语言的一个比较大的特征,参照js 4>:编码建议,命名规则和Java差不多... 除了$,@,@@ 5>:返回值 return关键字 def giveMe return 'gs','yyy'end print f.giveMe这里有一个迷惑,就是同时返回2个数据这个其实就是一个数组,如果返回的是一个值,则是一个值,否则就是数组输出:["gs", "yyy"] 6>:下标print f.giveMe 这个使用了下标 7>:关于注释:你见过没有路标的高速公路么? 8>:重载与重写 overload && override和Java基本一致,需要注意的是,当存在默认参数的时候是不是比较特殊,不过想了下,不会, 因为def xx(name,age=26)其实相当于两种方式:def xx(name) & def xx(name,age)也即是说,如果存在def xx(name) 是会和def xx(name,age=26)冲突的...在这一点上和Java的xxx(long ... args) 是比较相像的... 9>:增强特性:class Person def talk print "I'am a person" endend class Stu < Person def talk super print ",and I'am a student too..." endend stu = Stu.newstu.talk output:I'am a person,and I'am a student too....靠,这个功能太NB了,推荐不要使用!!!!!!!,可能(刚学,不太确定)会有风险,如果重构,是不是会死人?! 10>:关于初始值:Java中的,int,long,float 都是存在默认值的,比如0..... 但是注意,Ruby中都是对象,所以不存在0为初始值.... 都是nil,OMG,这个好! 11>:关于静态(不是常量!不是常量):class StudengClass def StudentClass.student_count #静态啊,静态啊.... puts "static function content" endend StudentClass.student_count # 访问以下静态方法.... 12>:关于单利方法:x1 = X.newx2 = X.new def x2.showMyName print 'Geng Shuang'end showMyName 只属于x2,x1不存在该方法呵呵呵呵呵呵呵呵呵呵呵呵呵呵,单例了吧.... 13>:访问控制public ,protected ,provite跟Java差不多,不过Ruby中默认都是public的,呵呵~~~~~ #后的大括号是可以省略的...
不是任何时候都可以省略。
irb(main):005:0> y=123
=> 123
irb(main):006:0> puts "#y"
#y
=> nil
irb(main):007:0> puts "#{y}"
123
=> nil
页:
[1]