Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

เชี่ยวชาญ Ruby Arrays: ตัวอย่างปฏิบัติและเมธอดจำเป็น

Array คืออะไร?

Array เป็น built-in Ruby class เก็บ list ของ zero หรือมากกว่า items มี methods ช่วย add, access, loop ผ่าน items ทั้งหมดง่ายๆ

มีประโยชน์เพราะไม่งั้นต้องใช้ variables หลายตัว

ตัวอย่าง:

a = 1
b = 2
c = 3

แทนที่จะทำ:

numbers = [1, 2, 3]

ส่วนที่ดีที่สุด? ใส่อะไรใน array ก็ได้!

เช่น:

  • Numbers
  • Strings
  • Arrays อีกที! (multi-dimensional array)

มาเรียนรู้ arrays ให้ดีที่สุด!

สารบัญ

  • 1 Arrays Are Zero-Indexed
  • 2 Ruby Array Methods
  • 3 แปลง Array เป็น String
  • 4 Multi-Dimensional Arrays (2D Arrays และมากกว่า)
  • 5 วิธี Iterate Ruby Arrays
  • 6 Negative Indexing
  • 7 Array Operations เพิ่มเติม
  • 8 Operations กับ Multiple Arrays
  • 9 สรุป
    • 9.1 Related

Arrays Are Zero-Indexed

เข้าถึง elements ใน array ด้วย index เริ่มที่ 0

ถ้า array มีคำ "cat", "dog", "tiger" จะ长得像这样:

เชี่ยวชาญ Ruby Arrays: ตัวอย่างปฏิบัติและเมธอดจำเป็น

โค้ด represent ข้อมูลในรูป:

["cat", "dog", "tiger"]

现在: คุณจะค้นพบทำอะไรกับ arrays ได้บ้าง!

Ruby Array Methods

เริ่มเรียนรู้สร้าง array สร้าง empty array แล้ว add items หรือสร้าง array พร้อม starting values

Initialize empty array:

users = []

Initialize array with data:

users = ["john", "david", "peter"]

ถ้าสร้าง string-only array... หลีกเลี่ยงพิมพ์ quotes ทุก string ด้วย %w

例子:

users = %w(john david peter)

ตอนมี array เข้าถึง elements ได้

怎么做:

users[0] # First element
users[1] # Second element
users[2] # Third element

也用 first 和 last methods:

users.first # First element
users.last # Last element

怎么 加 items 进 array:

# ทั้งคู่ effect เหมือนกัน << preferred
users.push "andrew"
users << "andrew"

怎么 删除 elements:

last_user = users.pop # ลบ element สุดท้าย return มัน
user.delete_at(0) # ลบ element แรก

有 shift 和 unshift 类似 pop/push 但 取 加 elements 前面 array

users.unshift "robert" # 加 element 前面 array
users.shift # ลบ element แรก return มัน

Array contain หรือ include item เฉพาะ?

เช็กค่าใน array Ruby:

numbers = [1,2,3]
numbers.include?(2) # true
numbers.include?(10) # false

Array ยาวเท่าไหร่? (คือ elements กี่ตัว)

words = ["cat", "coconut", "bacon"]
words.size # 3

Cheatsheet เล็ก:

Operation Methods
initialize Array.new, [], %w
read [0], first, last
add push, <<, unshift
remove pop, delete_at, shift

怎么 转 Array 成 String

แปลง array 成 string 用 Array#join method

例子:

letters = %w(a b c d)
letters.join # "abcd"

สังเกต method รับ 1 optional parameter 定义 separator ระหว่าง elements ตอน join

letters = %w(a b c d)
letters.join(" ") # "a b c d"

อยาก reverse operation string to array 用 split method:

"a b c".split

ผล:

["a", "b", "c"]

Multi-Dimensional Arrays (2D Arrays 和更多)

Array 组成 其他 arrays 叫 multi-dimensional array

2d array 例子:

users = [
  [1, 'Peter'],
  [2, 'Steven']
]

เข้าถึง element แรกจาก sub-array แรก syntax นี้:

users[0][0] # 1

Element ที่ 2 ของ sub-array แรก:

users[0][1] # 'Peter'

บางกรณีอยากแปลง multi-dimensional array 成 regular array 用 flatten method:

users.flatten # [1, "Peter", 2, "Steven"]

怎么 Iterate Ruby Arrays

有 array 了 不好 么 enumerate contents 印 出来? 好消息: 能!

例子: Print array 用 each

users.each { |item| puts item }

ต้องการ value และ index 兩者 用 array's each_with_index:

users.each_with_index { |item, idx| puts "#{item} with index #{idx}" }

Note: 这些 looping operations 多 有 归功于 Enumerable module mixed into Array class by default

例子: Capitalize 每个 word 在 Array 用 map

users = users.map { |user| user.capitalize }
users = users.map(&:capitalize)

map 不 modify array in-place 只 回新 array 元素 modified 所以 assign results กลับ variable 有 map! (有 exclamation point) modify array 直接 但 simpler version preferred

另一件事 可能 想做: 找 所有 items array 符合 criteria

例子: 找 所有 数字 大于 10:

numbers = [3, 7, 12, 2, 49]
numbers.select { |n| n > 10 } # => 12, 49

Negative Indexing

เรียนรู้ เข้าถึง element array 用 indexing (或 first, last methods) แต่ negative indexing?

พูดถึง 用 -1 เป็น array index Ruby เริ่ม จาก ท้าย array -1 ได้ last item -2 ได้ second to last ฯลฯ

例子:

letters = ["a", "b", "c"]
letters[-1] # "c"
letters[-2] # "b"

Array Operations เพิ่มเติม

做 多 事 用 arrays 如 sorting 或 picking random elements

用 sort method sort array ใช้ได้ ถ้า strings หรือ numbers ใน array advanced sorting check out sort_by

numbers = numbers.sort

ลบ duplicate elements จาก array ถ้าทำบ่อย consider 用 Set แทน

numbers = [1, 3, 3, 5, 5]
numbers = numbers.uniq # => [1, 3, 5]

สังเกต ไม่ permanently change array 多 Ruby methods 创建 新 array 有 changes 你 要 所以 save results 用 variable 或 用 uniq! method

อยาก pick random element จาก array 用 sample method:

numbers.sample

也 可能 想 "slice" array 取 portion 不是 全部

例子: 取 3 elements แรก จาก array 不 变它:

numbers.take(3)
numbers[0,3]

Advanced Ruby array slicing 更多 如 要 所有 elements 但 第一:

numbers[1..-1]

สังเกต difference comma (0,3) และ range (1..-1) ตัวแรก "ให้ 3 elements เริ่ม index 0" ตัวหลัง "ให้ characters ใน range นี้"

取 array size:

numbers.size # 5

เช็ก array ว่าง:

numbers.empty? # false

ลบ nil values:

numbers << nil # [1, 3, 3, 5, 5, nil]
numbers.compact # [1, 3, 3, 5, 5]

Operations กับ Multiple Arrays

有 两个 arrays 要 join 或 merge 成 一起 做 这样:

# 更快 因为 这 改变 users array
users.concat(new_users)
# 更慢 因为 这 创建 新 array
users += new_users

ลบ elements จาก array 这样 users_to_delete 也是 array:

users = users - users_to_delete

最后 取 elements ที่ 出现 在 两个 arrays 同一时间:

users & new_users

สรุป

Ruby arrays 有用มาก และจะเป็น powerful ally ด้านข้างคุณ

ฝึกสร้าง array, 加 elements, 存取 elements by index ฯลฯ อ่าน Ruby hash อีก class สำคัญ 结合 arrays 寫更有趣 code

Practice makes perfect!

ถ้ามีประโยชน์ แชร์โพสต์ และสมัครรับ newsletter ด้านล่าง 🙂