Ruby基础

Ruby基础

Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发。因为Perl发音与6月诞生石pearl(珍珠)相同,因此Ruby以7月诞生石ruby(红宝石)命名。
是一门对程序员友好的编程语言

1.以#为单行注释

2.多行注释以=begin开头,以=end结尾

3.命名规则为:数字不能开头,但可以用= 和?结尾。类名每个单词首字母都大写,方法名和变量名全部小写中间用_线连接

变量

类变量

静态变量,使用@@作为变量的前缀,@@color,直接在类中定义

实例变量

属性,@color,作用域仅在instance之内没在Rails中大量使用

普通变量

作用域仅在某个方法内

全局变量

$ n a m e , 作 用 域 在 全 局 , 以 name,作用域在全局,以 name开头

class Apple
    @@from="china"
    def color= color
        @color = color
    end
    def color
        return @color
    end
    def get_from
        @@form
    end
    def set_from from
        @@from =from
    end 
end

类方法

ClassName.function_name

class Apple
    def Apple.name
        "apple"
    end
end
#Apple.name
#==> apple

字符串

string_line = "单行字符串"
mulitiple_line = %Q{
    多行
    字符串
}

不变的字符串:symbol

:name #以:开头

字符串插值

最好所有的地方使用字符串插值避免使用+号连接

“#{string_line}”

数组:可以存储多种数据类型

Hash:key/value

#任何情况下都生效的语法
jim = {
    :name => "Jim",
    :age => "20"
}
#1.9之后的语法
jim = {
    name:"jim",
    age:20
}
#也可以动态创建
jim = {}
jim[:name] = "jim"
jim[:age] = 20

判断

if a==1
    xxx
elsif a==2
    xxx
else
#case 分支    能增强可读性
case a
    when 1 then xxxx
    when 2 then xxxx
    when 3,4,5 then xxxx
    else puts "xxxx"
end

支持三元表达式

循环:for,each (前者是关键字,后者是普通方法)

[1,2,3].each{ |e|
    puts e
}
#等同于
for e in [1,2,3]
    puts e
end
#for 和 each 都可以做循环,但是高手都用each
#因为for后面的变量是全局变量会保存在for之外

loop和while

loop do
    #do things
    break if <condition>
end

begin
    #do things
end while <condition>

Ruby简写

1.方法调用时最外层括号可以省略
2.每个函数最后一行代码默认会return,不需要显式写出return
3.hash最外面的{}在大多数情况下可以省略,当hash做为最后一个参数时可以省略

Apple.create :name =>'apple',:color => 'red'
#等同
Apple.create name:'apple',color: 'red'

4.调用block

Apple.all.map { |apple| apple.name}
#等同于
Apple.all.map(&:name)

Module:类似于接口或者抽象类吧

不能被new
可以被include
module中的self.xx方法可以被直接调用
module中的普通方法,需要被某个class include之后,由对应的class调用

Mixed in

一种代码重用方式,比继承和接口实现更加优秀的代码重用,非常直观

model Tool
    def show_tips
        "hi"
    end
end

class Apple
    include Tool
end 

puts Apple.show_tips
==> hi

元编程类似于Java中的反射吧

每个语言都多少有些动态改变代码逻辑的能力,但是ruby的元编程能力是最强的,用起来也是最得心应手的

def say_hi_to_jim
    "hi,jim"
end
def say_hi_to_han_mei_mei
    "hi,han_mei_mei"
end
def say_hi_to_li_lei
    "hi,li lei"
end
#元编程写法
["jim","li_lei","han_mei_mei"].each do |name|
    define_method "say_hello_to#{name}" do
        puts "hi,#{name}"
    end
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值