好几天没写博客了,憋了一下,发现我之前还做了ruby的学习笔记.就分享一下,我也当做复习.个人还是很喜欢ruby语言的,感觉ruby对程序员的友好性比python好.为什么要学ruby?因为可以用来写rails.rails的教程以后再分享,不过现在网上教程也很多.
个人原创,版权所有,转载请注明原文出处,并保留原文链接:
http://www.embbnux.com/2014/10/23/ruby_learning_note/
一 首先是ruby环境的安装
系统环境是ubuntu,这里参考ruby china上的快速安装指南:
sudo apt-get install curl curl -L https://get.rvm.io | bash -s stable source ~/.rvm/scripts/rvm rvm install 2.0.0 rvm 2.0.0 --default ruby -v
然后就安装好了ruby 2.0.0,并设置默认版本为2.0.0.终端输入irb可以直接进入ruby的环境.可以直接输入指令执行.就像终端执行shell命令一样.
也可以写成脚本文件,直接在文本编辑器里面写进ruby代码,保存文件后缀为.rb就可以了.
二 ruby语法笔记
#输出helloworld:
puts "hello,world"
#定义方法:
def hello_world(name)
"Hello world,I am #{name}"
end
#数组: arrays : key是整数
#散列表: Hashes : key任何对象
a = %w{ant bee cat} #相当于 a = { 'ant', 'bee', 'cat'}
a[0] #代表ant
#散列表:
inst_section = {
'cello' => 'string',
'clarinet' => 'woodwind',
'drum' => 'percussion',
'oboe' => 'woodwind'
}
#=>左边是key,右边是值
inst_section['oboe'] #表示 "woodwind"
#创建空散列表,指定默认值0
histogram = Hash.new(0)
#局部变量:name
#全局变量:$name
#实例变量:@name
#类变量: @@name
#常量和类名称: PI,MyClass
#控制结构:
#if语句
if count >10
puts "Try again"
elseif tries ==3
puts "You lose"
else
puts "Hello"
end
#while语句:
while i<100
i++
end
while line = gets
puts line.downcase
end
#简化写法:
puts "hello" if a>100
#相当于:
if a>100
puts "hello"
end
a = a*a while a<100
#相当于
a=2
while a<100
a = a*a
end
#正则表达式:
#/Perl|Python/ -> /P(erl|ython)/
#/ab+c/ a后面跟着一个或者多个b, 然后跟着c
#/ab*c/ a后面跟着0个或者多个b, 然后跟着c
#/\s/ 匹配空白字符(空格符 制表符 回车换行等)
#/\d/ 匹配任何数字
#/\w/ 匹配会出现在一个词内的任何字符
#/./ 匹配几乎任意字符
#/\d\d:\d\d:\d\d/ 时间: 12:34:56
#ruby匹配操作符 =~
#字符串中发现了正则模式,=~返回模式开始得位置,否则返回nil
if line =~ /Perl|Python/
puts "hello: #{line}"
end
#把字符串line和正则比较,比较成功则输出
#替换字符:
line.sub(/Perl/,'Ruby') #用'Ruby'替换第一个'Perl'
line.gsub(/Perl/,'Ruby') #用'Ruby'替换所有的'Perl'
#块概念:
在花括号或者do ... end之间的一组代码
{puts "Hello"}
do
club.enroll(person)
persion.socialize
end
greet { puts "Hi" } # greet方法调用与后面得块想关联
#yield使用:
def call_block
puts "hello 1"
yield
yield
puts "hello 2"
end
call_back {puts "hello3"}
#输出:
#hello1
#hello3
#hello3
#hello2
#每次调用yield关联得block被调用
#提供参数给field:
def call_block
yield("hello",99)
end
call_block {|str,num|...}
迭代:
animals = %w{ ant bee cat }
animals.each {|animal| puts animal}
#输出:
#ant
#bee
#cat
就到这里了.
邮件发送测试,哈哈