04/20/2010 Ruby命名 数组和散列表

Ruby命名规则:名称的第一个字符显示这个名称如何被使用

1)局部变量,方法参数,方法名称:必须以小写字母下划线开始。

2)全局变量:都有$符号为前缀。

3)实例变量:以@符号开始。

4)类变量:以@@符号开始。

5)类名称,模块名称,常量: 必须以一个大写字母开始。

数组(arrays)和散列表(hashes)

Ruby的数组和散列表是被索引的收集(indexed collection).

相同:两者都存储对象的集合,通过键(key)来访问。都可以保存不同类型的对象。

不同:数组的键是整数,散列表支持以任何对象作为它的键。

数组

数组:a=[1,’cat’,3.14]

访问: a[0]

设置:a[2] = nil

显示:puts a

注: nil是一个对象,表示没有任何东西的对象。

创建数组:a = %w{a b c} #same as: a = ["a","b","c"] (不需要处理引号和逗号)

散列表

hash literal: 使用花括号,必须为每一项提供2个对象,一个键(key)和一个值(value)。

hashes = {

'key1' => 'value1',

'key2' => 'value2',

'key3' => 'value1'

}

使用:hashes[‘key1’]

创建散列表:hashes = Hash.new(5) ;

puts hashes[‘key1’] # return 5

注:在散列表里面,键(key)必须是唯一的。

散列表里面的键和值,可以是任意对象(如:值是数组或散列表)。

若用散列表没有包含的键进行索引(如hashes[‘key4’]),散列表返回nil。

在创建一个新的空散列表时,可以指定一个默认值(5代替返回值nil)。

Test Code:

# My first method

def goodnight(name)

result = 'Good night, ' + name + '.'

return result

end

puts goodnight('test1')

# Code in another way

def goodnight(name)

result = "Good night, #{name}."

return result

end

puts goodnight("test2")

$greeting = "Hello"

@name = "Prudence"

puts "#$greeting, #@name"

def goodnight(name)

"Good night, #{name}"

end

puts goodnight("test3")