0Pricing
Elixir & Phoenix: Scalable Backend Development · 강의

함수, 모듈 및 파이프 연결

함수를 정의하고 코드를 모듈로 구성하며, 명확한 데이터 변환을 위해 파이프 연산자를 사용하는 방법을 배웁니다.

함수, 모듈 및 파이프 연결은(는) CoddyKit의 무료 Elixir & Phoenix: Scalable Backend Development 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Elixir & Phoenix: Scalable Backend Development 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Elixir & Phoenix: Scalable Backend Development 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

Introduction to Elixir Functions

In Elixir, functions are the building blocks of your programs. They take inputs, perform operations, and return outputs.

Elixir functions are designed to be pure: they don't change data outside their scope and always produce the same output for the same input. This makes your code predictable and easier to reason about.

Defining Public Functions

You define public functions using the def keyword. These functions can be called from anywhere within your application, provided they are part of a module.

Let's create a simple function that adds two numbers:

defmodule MathOperations do
  def add(a, b) do
    a + b
  end
end

IO.puts "Sum of 5 and 3: #{MathOperations.add(5, 3)}"

Defining Private Functions

Sometimes you need helper functions that should only be used internally within a module. For these, you use the defp keyword.

Private functions cannot be called directly from outside their defining module. This helps encapsulate logic.

defmodule SecretOperations do
  defp secret_add(a, b) do
    a + b + 10 # A 'secret' addition
  end

  def public_operation(x, y) do
    secret_add(x, y)
  end
end

IO.puts "Result of public operation: #{SecretOperations.public_operation(2, 3)}"
# SecretOperations.secret_add(1, 2) would cause an error if called directly outside the module.

Function Arity and Clauses

Arity refers to the number of arguments a function takes. Elixir allows you to define multiple function clauses with the same name but different arities or different patterns for arguments.

This enables powerful pattern matching (covered in a previous lesson) to handle different scenarios cleanly within a single function definition.

defmodule Greeter do
  def greet("Alice"), do: "Hello, Alice!"
  def greet(name), do: "Hi there, #{name}!"
end

IO.puts Greeter.greet("Alice")
IO.puts Greeter.greet("Bob")

Anonymous Functions

Anonymous functions (also called lambdas) are functions without a name. They are often used when you need to pass a function as an argument to another function, or for short, one-off operations.

You define them using the fn keyword.

adder = fn a, b -> a + b end
multiplier = fn x, y -> x * y end

IO.puts "Anonymous add: #{adder.(10, 20)}"
IO.puts "Anonymous multiply: #{multiplier.(4, 5)}"

Organizing Code with Modules

Modules in Elixir are containers for organizing related functions and data. They help prevent naming conflicts and make your code more structured and maintainable.

You define a module using the defmodule keyword. It's common practice for module names to start with an uppercase letter, following Elixir's naming conventions.

Creating Your First Module

Let's put our add function inside a module called Calculator. This makes it clear that the add function is part of a set of calculator-related operations.

defmodule Calculator do
  def add(a, b) do
    a + b
  end

  def subtract(a, b) do
    a - b
  end
end

IO.puts "Module defined!"

Calling Module Functions

To call a function defined within a module, you use the module's name, followed by a dot (.), and then the function name with its arguments.

This explicit naming helps you understand where a function comes from.

defmodule Calculator do
  def add(a, b), do: a + b
  def subtract(a, b), do: a - b
end

IO.puts "10 + 5 = #{Calculator.add(10, 5)}"
IO.puts "10 - 5 = #{Calculator.subtract(10, 5)}"

Introducing the Pipe Operator `|>`

The pipe operator |> is one of Elixir's most beloved features. It makes sequences of function calls incredibly readable, flowing data from one function to the next.

Think of it as taking the result of the expression on the left and passing it as the first argument to the function call on the right.

Pipelining in Action

Instead of nesting function calls like function_c(function_b(function_a(data))), the pipe operator lets you write it as data |> function_a() |> function_b() |> function_c().

This reads like a series of steps, making complex data transformations much clearer.

defmodule DataProcessor do
  def double(x), do: x * 2
  def add_five(x), do: x + 5
  def to_string(x), do: to_string(x)
end

result = 10 
         |> DataProcessor.double() 
         |> DataProcessor.add_five() 
         |> DataProcessor.to_string()

IO.puts "Processed result: #{result}"

Check Your Understanding

Which of the following statements about Elixir functions, modules, and the pipe operator are true?

Recap: Functions, Modules & Pipes

Great job! In this lesson, you learned the essentials of organizing and transforming data in Elixir:

  • How to define public (`def`) and private (`defp`) functions.
  • The importance of modules (`defmodule`) for structuring your code.
  • How the pipe operator (`|>`) dramatically improves readability for sequential data transformations.

These concepts are fundamental to writing clear, maintainable, and functional Elixir applications. Keep practicing!

자주 묻는 질문

“함수, 모듈 및 파이프 연결” 강의는 무료인가요?

네 — “함수, 모듈 및 파이프 연결” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Elixir & Phoenix: Scalable Backend Development 강의 전체를 잠금 해제할 수 있습니다. Elixir & Phoenix: Scalable Backend Development 강의에는 총 4개의 강의가 포함되어 있습니다.

“함수, 모듈 및 파이프 연결”에서 뭘 배우나요?

함수를 정의하고 코드를 모듈로 구성하며, 명확한 데이터 변환을 위해 파이프 연산자를 사용하는 방법을 배웁니다. 브라우저에서 직접 실행하는 실습 코드로 Elixir & Phoenix: Scalable Backend Development을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Elixir & Phoenix: Scalable Backend Development을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Elixir & Phoenix: Scalable Backend Development은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“함수, 모듈 및 파이프 연결” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Elixir & Phoenix: Scalable Backend Development 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Elixir & Phoenix: Scalable Backend Development 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 함수, 모듈 및 파이프 연결
  2. 열거 가능한 컬렉션 다루기
  3. 재귀와 고차 함수
  4. Stream 모듈을 사용한 지연 평가
← Elixir & Phoenix: Scalable Backend Development(으)로 돌아가기