Array Functions

本文深入探讨了Ruby编程语言的基本操作、数据结构处理、数组操作、条件选择与迭代、数组筛选与转换等核心内容,提供了丰富的示例和应用场景,旨在帮助开发者提升编程效率和代码质量。

1. NEW

tar = [1,2,3,4,5]

arr = Array.new(4000){|i| 1+i }

# better spell:

arr = (1..4000).to_a

# use tap

tar = [].tap {|i| (1..3).to_a.each{|e| i << e}}

 

2.1 take

# Returns first elements

tar = arr.take(60)

 

2.2 first last

tar = arr.first

tar = arr.last

# first == take

tar = arr.first(60)

tar = arr.last(60)

 

2.3 slice

tar = arr[0..99]

tar = arr[0...99]

tar = arr[100..-1]

 

2.4 sample

# Choose random element(s)

tar = arr.sample

tar = arr.sample(2000).take(50)

 

3. split

ids = (1..100).to_a

a.each_slice(20) do |play_ids|

  p play_ids

end

 

4. flatten uniq sort

tar = [[1,4,2],[1,4,3],[2,3,4]].flatten

tar = tar.uniq

tar = tar.sort

 

5.1 drop

DEL element(s) at the top front

tar = arr[0..50].drop(3)

 

5.2 push

Add element(s)

tar = [1,2,3].push(4)

# better spell:

tar = [1,2,3] << 4

# infinity agrs

tar = [1,2,3].push('sina', 3.14, (3..7), :s)

 

5.3 unshift

Add element(s) at the top front

 

6.1 each each_with_index || odd?

[1,2,3].each{|e| p e.odd?}

[1,2,3].each_with_index{|e,i| p "Array[#{i}] => #{e}"}

 

6.2 select VS map&collect

new_array's SIZE changed OR not

tar = [12,22,-34,-1,134,-43].select{|e| e>0}

tar.size

# map == collect

tar = [12,22,-34,-1,134,-43].collect{|e| e if e>0}

tar = [12,22,-34,-1,134,-43].map{|e| e if e>0}

 

6.3 map with index || compact

tar = [12,22,-34,-1,134,-43].enum_for(:each_with_index).map{|e,i| "#{i}: #{e}" if e>0}.compact

 

2D find

choise-1 arr.map{|e| e if e.title == 'ruby' }.compact.first

chiose-2 arr.find{|e| e.title == 'ruby' }    http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-find

 

基本动态数组是一种能够根据需要自动调整大小的数组,在编程中被广泛使用。与静态数组不同的是,动态数组的长度可根据程序的执行情况进行增加或缩减。 使用函数实现基本的动态数组操作可以增加程序的模块性和可读性。以下是一个使用函数实现基本动态数组的示例: 1. 创建动态数组:可以编写一个函数来创建动态数组。该函数会接受一个整数参数,表示数组的长度,并返回一个指向动态数组的指针。函数内部会使用内存分配函数(如malloc)分配一块大小合适的内存空间,并返回指向此内存空间的指针。 2. 添加元素:编写一个函数来添加元素到动态数组中。此函数应接受动态数组的指针和要添加的元素作为参数。函数内部会重新分配内存空间,将原有元素复制到新的内存位置,并添加新元素。 3. 删除元素:编写一个函数来删除动态数组中的元素。此函数应接受动态数组的指针和要删除的元素的索引作为参数。函数内部会重新分配内存空间,将指定索引前后的元素复制到新的内存位置,从而删除指定索引处的元素。 4. 访问元素:编写一个函数来访问动态数组中的元素。此函数应接受动态数组的指针和要访问的元素的索引作为参数,并返回对应索引处的元素。 5. 释放内存:编写一个函数来释放动态数组占用的内存空间。此函数应接受动态数组的指针作为参数,并使用内存释放函数(如free)释放该内存空间。 通过将这些功能封装到函数中,可以更方便地使用和管理动态数组。这不仅提高了程序的可读性和可维护性,还可以减少代码重复和错误。同时,使用函数还可以轻松地修改和扩展动态数组的功能,以满足不同的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值