免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2449 | 回复: 1
打印 上一主题 下一主题

Ruby 学习笔记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-28 11:32 |只看该作者 |倒序浏览
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[1] 这个使用了下标

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"

        end

end

class Stu < Person

        def talk

                super

                print ",and I'am a student too..."

        end

end

stu = Stu.new

stu.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"

        end

end

StudentClass.student_count # 访问以下静态方法....

12>:

关于单利方法:

x1 = X.new

x2 = X.new

def x2.showMyName

        print 'Geng Shuang'

end

showMyName 只属于x2,x1不存在该方法

呵呵呵呵呵呵呵呵呵呵呵呵呵呵,单例了吧....

13>:

访问控制

public ,protected ,provite

跟Java差不多,不过Ruby中默认都是public的,呵呵~~~~~

论坛徽章:
0
2 [报告]
发表于 2010-12-28 12:26 |只看该作者
#后的大括号是可以省略的...


不是任何时候都可以省略。

irb(main):005:0> y=123
=> 123
irb(main):006:0> puts "#y"
#y
=> nil
irb(main):007:0> puts "#{y}"
123
=> nil
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP