Elixir ja Phoenix: skaalautuva backend-kehitys · Oppitunti

Hahmonsovitus ja ohjausvirta

Ottakaa Elixirin tehokas hahmonsovitus ja keskeiset ohjausvirtarakenteet, kuten `if`, `case` ja `cond`, haltuun.

Oppitunti 3/411 vaihetta

Hahmonsovitus ja ohjausvirta on ilmainen Elixir ja Phoenix: skaalautuva backend-kehitys-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Elixir ja Phoenix: skaalautuva backend-kehitys-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Elixir ja Phoenix: skaalautuva backend-kehitys-kurssilla on yhteensä 4 oppituntia.

Johdatus hahmonsovitukseen

Hahmonsovitus on Elixirin ydin. Tässä = on match-operaattori, ei sijoitusoperaattori — se sovittaa vasemman puolen oikeaan puoleen.

Muuttujien perussovitus

Yksinkertaisimmillaan sovitus sitoo sitomattoman muuttujan arvoon. Jos muuttuja on jo sidottu, Elixir tarkistaa sen sijaan, että osapuolet todella sopivat yhteen.

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()

Sovitus literaalien kanssa

Kun sijoitatte literaalin vasemmalle puolelle, sovituksesta tulee väite: se onnistuu vain, jos molemmat puolet ovat yhtäsuuret, muuten syntyy virhe. Tämä on kätevää tarkistuksissa.

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()

Tuplien hajottaminen

Sovitus on parhaimmillaan tuplien kanssa — voitte hajottaa ne suoraan muuttujiksi. Näin puretaan esimerkiksi {:ok, value}-tulokset.

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()

Listojen hajottaminen

Hajottakaa listoja mallilla [head | tail]: head on ensimmäinen alkio ja tail loput alkiot. Käyttäkää _-merkkiä osiin, joista ette välitä.

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()

Pin-operaattori (^)

Pin-operaattori ^ tarkoittaa: ”älä sido muuttujaa uudelleen, vaan sovita sen nykyiseen arvoon”. Se sopii erinomaisesti yhtäsuuruuden varmistamiseen.

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()

Yksinkertaiset ehdot: if/unless

Käyttäkää yksinkertaisissa haaroissa if-rakennetta ja sen vastinetta unless; kumpaankin voi liittää valinnaisen else-haaran. Ne ovat selkein väline yhteen tosi/epätosi-ehtoon.

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()

Useiden hahmojen käsittely casella

case-lauseke sovittaa yhden arvon useisiin hahmoihin ja suorittaa ensimmäisen sopivan haaran — hahmonsovitusta ohjausvuona.

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()

Useita ehtoja cond-rakenteella

Kun tarkistettavana on useita totuusarvoisia ehtoja (kuten muualla toteutettu if/else-if-ketju), cond suorittaa ensimmäisen lausekkeen, jonka ehto on tosi.

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()

Hahmonsovitushaaste

Tarkastelkaa seuraavaa Elixir-koodiesimerkkiä:

data = ["apple", {:fruit, "banana"}, "cherry"]
[first, {:fruit, second}, _] = data

Mitkä ovat muuttujien first ja second lopulliset arvot tämän koodin suorittamisen jälkeen?

Kertaus: hahmonsovitus ja ohjaus

Kertaus: = suorittaa sovituksen, tuplat ja listat hajotetaan osiin, ^ lukitsee arvon ja if/case/cond ohjaavat ohjelman kulkua.

Aloita maksutta

Opi Elixir tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Hahmonsovitus ja ohjausvirta” ilmainen?

Kyllä – oppitunnin ”Hahmonsovitus ja ohjausvirta” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Elixir ja Phoenix: skaalautuva backend-kehitys-kurssin, päivitä CoddyKit PROhon. Elixir ja Phoenix: skaalautuva backend-kehitys-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Hahmonsovitus ja ohjausvirta”?

Ottakaa Elixirin tehokas hahmonsovitus ja keskeiset ohjausvirtarakenteet, kuten `if`, `case` ja `cond`, haltuun. Harjoittelet Elixir ja Phoenix: skaalautuva backend-kehitys-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Elixir ja Phoenix: skaalautuva backend-kehitys-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Elixir ja Phoenix: skaalautuva backend-kehitys-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Hahmonsovitus ja ohjausvirta”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Elixir ja Phoenix: skaalautuva backend-kehitys-oppitunnilla?

Kyllä. Jokainen Elixir ja Phoenix: skaalautuva backend-kehitys-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Elixir-kielen esittely
  2. Perustietotyypit ja operaattorit
  3. Hahmonsovitus ja ohjausvirta
  4. Merkkijonot, binäärit ja sigilit Elixirissä
← Takaisin: Elixir ja Phoenix: skaalautuva backend-kehitys