Ruby学习笔记

好几天没写博客了,憋了一下,发现我之前还做了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

就到这里了.

 

 

 

《Ruby学习笔记》上有1条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Time limit is exhausted. Please reload the CAPTCHA.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据