好几天没写博客了,憋了一下,发现我之前还做了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
就到这里了.
邮件发送测试,哈哈