数组及 hash 相关用法
数字和字符串都可以作为 hash 的键
将数组转化为 hash :( a 为对象数组)
首先定义一个 hash h={} , a.each {|e|h[e.code]=e}
.compact 移出数组内所有 nil 的元素。形成不含 nil 的数组
.join( “” ) 将数组以(“”)内的格式输出
.map{|u| [u.name,u.id]} 将数组中的元素再以数组形式输出
.group_by(|a| a.rxsj.year).keys 按照数组中的某些内容进行分组形成 hash 集合
Params[:student] 取到的是一个 hash , params[:student][:rxsj] 取到的是里面的项
Select_tag(:xiao,options_for_select( 放入 hass)) 与 form.select() 的用法相同
Redirect_to :action=>xxx :student=>xxx :student 传入的 hash 可以被 action 中的 params[:student] 接收到
数组 << 对象 往数组内增加一个元素
Hash.each 的迭代为 hash.each{|k,v| ….}k 代表键, v 代表值
Ruby 中函数的默认的返回值为 true ,结束函数时应以 return 来结束
对于不是一行的语句块要用 do end
例 xxxx.each do |aaa|
…………
End
数组 .include?( 一个元素 ) 返回 true 或 false 判断是否包换该元素
注:数组的迭代有顺序,而 hash 的迭代没有顺序
数组操作
1 、数组定义
arr1=[]
arr2=Array.new
arr3=[ '1' , '2' , '3' ]
2 、输出
print arr3, "\n" #123
putsarr3[0] #1
print arr3.join( "," ) #1,2,3
3 、访问数组元素
arr1[0]
arr1[-1] # 这个比较有意思,意思是最后一个的数据
arr1.first
arr1.last
arr1.max
arr1.min
arr1.length
arr1.size
4 、数组操作
arr3[4]= '5' # 此时 arr3[3] 默认尾 nil
arr3.delete_at(3) # 删除指定下标的元素
arr3[2]=[ "3a" , "3b" , "3c" ] # 可以这样来做
arr3.delete([ "3a" , "3b" , "3c" ]) # 可以删除上面添加的
arr3.push( '6' ) # 插入元素
arr3.insert(3, "b" ) # 在指定位置插入新元素
arr3<< "f" <<2 # 从左至右一次加入元素
arr3.pop # 删除尾元素
arr3.shift # 删除首元素
arr3.clear # 清空数组
5 、数组运算
aaa=[ "aa" ,4,5, "bb" ]
bbb=[4,1,3,2,5]
print aaa+bbb, "\n" #aa45bb41325
print aaa*2, "\n" #aa4566aa4566
print bbb-aaa #132
print aaa|bbb, "\n" #aa45bb132
print aaa&bbb, "\n" #45
print bbb.sort, "\n" #12345 排序
print aaa.reverse, "\n" #bb54aa 倒置
print bbb.sort.reverse, "\n" #54321 降序