Ruby(二)

正则表达式:
在Ruby中,创建正则表达式的方式是 /pattern/。比如编写一个模式,使之匹配 “hello” 或者“Hi”的字符串。这个正则表达式的写法是

/hello|Hi/

在程序中要检查一个字符串是否与指定的正则表达式匹配,采用=~ 匹配运算符

if name=~/Ruby|Rails/
puts "true"
end

属性的访问性:
ruby并不支持直接访问类中的属性,如果要访问类中的属性,需要先通过attr_reader:属性名(只读),attr_writer:属性名(只写),attr_accessor:属性名(读写)来设定属性的访问权限。ruby在类里没办法定义变量,只能在方法中定义变量。方法和方法之间如果想通信只能通过@变量,也就是实例变量进行通信,ruby通过attr_xxxx可以控制@变量的访问性。

方法的访问性:
方法的访问性是通过public,private和protected进行限制的。public :方法名1,方法名2……这样的方式进行声明的。属性的访问性可以放在前面,但方法的访问性要放在方法之后,如果放在方法前面会出现方法未定义的报错。除了初始化方法恒化private,其它方法缺省为public

类方法(静态方法)。 ruby中定义类方法如下(即类名或self)

class HelloWorld
   def HelloWorld.hello(name)
        print name," said Hello."
    end
end
HelloWorld.hello("John")
class HelloWorld
   def self.hello(name)
        print name," said Hello."
    end
end
HelloWorld.hello("John")

需要注意的是,类方法不能访问实例变量

类变量(静态变量),ruby中类变量是通过加@@标识的

类常量:
类中还可以定义常量,还是要求大写字母开头。类中不能定义和方法平缓的变量,但是可以定义和方法平级的常量,常量可以被所有方法调用。类常量的调用方法是类名::常量名

模块:
模块是ruby特有的功能之一。模块和类很像,但和类最大的不同在于模块不能实例化,也不能继承,模块的作用有两个,一个是用于提供命名空间。第二提供Mix-in功能。

模块的常量和类常用调用方法一样。模块名::常量名。模块的方法调用和类的方法调用不同,可以使用模块::方法名,也可以使用模块.方法名

模块定义的方法默认是不对外部公开的,(模块内没有public private protect关键字),要将方法对模块外部公开,必须使用module_function

module HelloModule
   Version = "1.0"
    def hello(name)
       print "Hello, ",name,".\n"
     end
      module_function :hello #注意:冒号后不能有空格
end
 
p HelloModule::Version          #=>"1.0"
HelloModule::hello("Alice")      #=> hello, Alice.
include HelloModule
p Version         #=>"1.0"
hello("Alice")    #=>Hello, Alice

单引号和双引号的区别

单引号中不能包含变量,双引号中可以包含变量。在ruby中,单引号中的\n这样表示换行之类的转义字符都会无效,直接输出出来。

使用for
Ruby的for有两种用法

sum=0   
for i in 2..5   
sum+=1   
end  
puts sum  
sum=0
for i in 2..5
  sum+=1
end
puts sum
names = ["a","b","c"]    
for name in names   
puts name     
end  
names = ["a","b","c"]
for name in names
 puts name
end

注意hash输出结果,将键值都输出

name={"a"=>1,"b"=>2}   
for n in name   
  puts n   
end  
name={"a"=>1,"b"=>2}
for n in name
  puts n
end

迭代,其实迭代也是我们熟悉的循环中的一种

1.a=["a","b"]   
a.each{   
|n|   
puts n   
}  
a=["a","b"]
a.each{
 |n|
 puts n
}

4: hash算列表 ,ruby的hash格式用=>分隔,在调用hash数据时,ruby只能通过hash[name]调用

b={"a"=>1,"b"=>2}   
puts b["a"]
16 hours ago, this page was being read.

,

Subscribe to Comments