Padanan Corak dan Aliran Kawalan
Kuasai ciri padanan corak Elixir yang berkuasa serta binaan aliran kawalan penting seperti `if`, `case` dan `cond`.
Padanan Corak dan Aliran Kawalan ialah pelajaran Elixir & Phoenix: Pembangunan Bahagian Belakang Boleh Skala percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Elixir & Phoenix: Pembangunan Bahagian Belakang Boleh Skala, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Elixir & Phoenix: Pembangunan Bahagian Belakang Boleh Skala merangkumi sejumlah 4 pelajaran.
Pengenalan kepada Padanan Corak
Padanan corak ialah teras Elixir. Di sini = ialah operator padanan, bukannya tugasan — operator ini menjadikan bahagian kiri sepadan dengan bahagian kanan.
Padanan Pemboleh Ubah Asas
Padanan paling mudah mengikat pemboleh ubah yang belum terikat kepada suatu nilai. Jika pemboleh ubah itu sudah terikat, Elixir sebaliknya menyemak sama ada kedua-dua bahagian benar-benar sepadan.
defmodule BasicMatchDemo do
def run do
# 'a' is unbound, so it's assigned 10
a = 10
IO.puts "a is: #{a}"
# 'b' is unbound, so it's assigned 20
b = 20
IO.puts "b is: #{b}"
# This matches 'a' to the value of 'b' (20)
# 'a' is re-bound to 20
a = b
IO.puts "After a = b, a is: #{a}"
end
end
BasicMatchDemo.run()Padanan dengan Literal
Letakkan literal di sebelah kiri dan padanan itu menjadi penegasan: ia berjaya hanya jika kedua-dua bahagian sama; jika tidak, ia mencetuskan ralat. Berguna untuk pengesahan.
defmodule LiteralMatchDemo do
def run do
# This matches because 1 is equal to 1
1 = 1
IO.puts "1 = 1 matched successfully!"
# This matches because 'hello' is equal to 'hello'
"hello" = "hello"
IO.puts "'hello' = 'hello' matched successfully!"
# If you uncomment the line below, it will cause a MatchError
# 1 = 2
# IO.puts "This line would not be reached if 1 = 2 failed"
end
end
LiteralMatchDemo.run()Menguraikan Tuple
Padanan amat berguna pada tuple — uraikannya terus ke dalam pemboleh ubah, iaitu cara anda membongkar hasil {:ok, value}.
defmodule TupleMatchDemo do
def run do
# Match a tuple to extract its elements
{:person, name, age} = {:person, "Alice", 30}
IO.puts "Name: #{name}, Age: #{age}"
# Match a common result tuple
{:ok, data} = {:ok, "User fetched successfully"}
IO.puts "Status: ok, Data: #{data}"
# If you uncomment the line below, it will cause a MatchError
# {:error, reason} = {:ok, "Success"}
end
end
TupleMatchDemo.run()Menguraikan Senarai
Uraikan senarai dengan corak [head | tail]: head ialah elemen pertama, manakala tail ialah bakinya. Gunakan _ untuk bahagian yang tidak anda perlukan.
defmodule ListMatchDemo do
def run do
list = [1, 2, 3, 4, 5]
# Match head and tail
[head | tail] = list
IO.puts "Head: #{head}, Tail: #{inspect tail}"
# Match specific elements
[first, second, third | _rest] = list
IO.puts "First: #{first}, Second: #{second}, Third: #{third}"
# Match an empty list
[] = []
IO.puts "Empty list matched!"
end
end
ListMatchDemo.run()Operator Pin (^)
Operator pin ^ bermaksud "jangan ikat semula — sebaliknya padankan dengan nilai semasa pemboleh ubah ini". Sangat berguna untuk menegaskan kesamaan.
defmodule PinOperatorDemo do
def run do
value_a = 10
value_b = 10
# This uses the current value of value_a (10) to match against value_b
# It succeeds because 10 matches 10
^value_a = value_b
IO.puts "Match successful: value_a = #{value_a}, value_b = #{value_b}"
value_c = 5
# If you uncomment the line below, it will cause a MatchError
# because ^value_a (10) is not equal to value_c (5)
# ^value_a = value_c
# IO.puts "This line would not be reached if ^value_a = value_c failed"
end
end
PinOperatorDemo.run()Syarat Mudah: if/unless
Untuk cabang mudah, gunakan if dan padanannya, unless, setiap satunya dengan else pilihan. Inilah alat paling kemas untuk satu syarat benar/palsu.
defmodule IfUnlessDemo do
def run do
number = 7
if number > 5 do
IO.puts "Number is greater than 5"
else
IO.puts "Number is 5 or less"
end
unless rem(number, 2) == 0 do
IO.puts "Number is odd"
else
IO.puts "Number is even"
end
end
end
IfUnlessDemo.run()Mengendalikan Berbilang Corak dengan case
Ungkapan case memadankan satu nilai dengan beberapa corak dan menjalankan corak pertama yang sepadan — padanan corak sebagai aliran kawalan.
defmodule CaseExpressionDemo do
def run do
status = {:ok, "Data loaded"}
case status do
{:ok, message} ->
IO.puts "Success: #{message}"
{:error, reason} ->
IO.puts "Failed: #{reason}"
_ ->
IO.puts "Unknown status"
end
# Another example with a simple value
grade = "B"
case grade do
"A" -> IO.puts "Excellent!"
"B" -> IO.puts "Good job!"
_ -> IO.puts "Keep trying!"
end
end
end
CaseExpressionDemo.run()Berbilang Syarat dengan cond
Apabila anda mempunyai banyak semakan boolean (rantaian if/else-if di tempat lain), cond menjalankan klausa pertama yang syaratnya benar.
defmodule CondExpressionDemo do
def run do
score = 85
cond do
score >= 90 -> IO.puts "Grade: A"
score >= 80 -> IO.puts "Grade: B"
score >= 70 -> IO.puts "Grade: C"
true -> IO.puts "Grade: D or lower" # The 'true' clause acts as a catch-all
end
temperature = 25
cond do
temperature > 30 -> IO.puts "It's hot!"
temperature > 20 -> IO.puts "It's warm."
true -> IO.puts "It's cool."
end
end
end
CondExpressionDemo.run()Cabaran Padanan Corak
Pertimbangkan petikan kod Elixir berikut:
data = ["apple", {:fruit, "banana"}, "cherry"]
[first, {:fruit, second}, _] = dataApakah nilai akhir pemboleh ubah first dan second selepas kod ini dilaksanakan?
Imbas Kembali: Padanan Corak & Kawalan
Imbas kembali: = memadankan, anda menguraikan tuple dan senarai, ^ menetapkan pin pada nilai, manakala if/case/cond mengawal aliran kawalan anda.
Pelajari Elixir dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Padanan Corak dan Aliran Kawalan” percuma?
Ya — teks penuh “Padanan Corak dan Aliran Kawalan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Elixir & Phoenix: Pembangunan Bahagian Belakang Boleh Skala, tingkat taraf kepada CoddyKit PRO. Kursus Elixir & Phoenix: Pembangunan Bahagian Belakang Boleh Skala merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Padanan Corak dan Aliran Kawalan”?
Kuasai ciri padanan corak Elixir yang berkuasa serta binaan aliran kawalan penting seperti `if`, `case` dan `cond`. Anda berlatih Elixir & Phoenix: Pembangunan Bahagian Belakang Boleh Skala menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Elixir & Phoenix: Pembangunan Bahagian Belakang Boleh Skala?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Elixir & Phoenix: Pembangunan Bahagian Belakang Boleh Skala di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Padanan Corak dan Aliran Kawalan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Elixir & Phoenix: Pembangunan Bahagian Belakang Boleh Skala ini?
Ya. Setiap pelajaran Elixir & Phoenix: Pembangunan Bahagian Belakang Boleh Skala menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pengenalan kepada Bahasa Elixir
- Jenis Data dan Operator Asas
- Padanan Corak dan Aliran Kawalan
- Rentetan, Binari dan Sigil dalam Elixir