메서드와 self 매개변수
구조체에 동작을 연결합니다.
메서드와 self 매개변수은(는) CoddyKit의 무료 Zig Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Zig Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
Data Plus Behavior
A struct can hold more than fields. You can declare methods inside it: functions that act on the data they belong to.
Functions Live Inside
Write a normal fn inside the struct body. It becomes namespaced under the type, callable as Type.name.
const Point = struct {
x: i32,
y: i32,
fn origin() Point {
return Point{ .x = 0, .y = 0 };
}
};The self Parameter
A method that works on an instance takes the value as its first parameter, named self by convention.
fn magnitude(self: Point) i32 {
return self.x + self.y;
}Call With a Dot
Call a method through an instance with a dot. Zig passes the instance as self automatically for you.
const p = Point{ .x = 3, .y = 4 };
const m = p.magnitude();self Is Just an Argument
There is no hidden magic. The dot call p.magnitude() is exactly the same as Point.magnitude(p).
const m = Point.magnitude(p);Reading self by Value
Taking self by value gives you a copy. That is fine for reading fields, but changes to it will not stick.
fn sum(self: Point) i32 {
return self.x + self.y;
}Mutating Needs a Pointer
To change fields, take self as a pointer with *Point. Now writes go to the original instance, not a copy.
fn moveRight(self: *Point) void {
self.x += 1;
}Auto-Reference on Call
When a method wants *Point, Zig takes the address of your var for you. You still just write p.moveRight().
var p = Point{ .x = 0, .y = 0 };
p.moveRight();Use @This for the Type
Inside the body you can refer to the enclosing type with @This(), handy when the type has no outer name yet.
const Counter = struct {
n: i32,
fn get(self: @This()) i32 {
return self.n;
}
};Methods Without self
A method need not take self at all. Constructors and helpers often skip it and act as plain namespaced functions.
fn init(x: i32, y: i32) Point {
return Point{ .x = x, .y = y };
}Organizing With Methods
Grouping behavior next to data keeps your code tidy. Methods make a struct read like a small, self-contained component.
Quick Check
What does a method need to change an instance's fields?
Recap
You added methods: functions inside a struct, with self as the instance. Use self: Point to read and self: *Point to mutate. 🔧
자주 묻는 질문
“메서드와 self 매개변수” 강의는 무료인가요?
네 — “메서드와 self 매개변수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Zig Academy 강의 전체를 잠금 해제할 수 있습니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“메서드와 self 매개변수”에서 뭘 배우나요?
구조체에 동작을 연결합니다. 브라우저에서 직접 실행하는 실습 코드로 Zig Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Zig Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Zig Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“메서드와 self 매개변수” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Zig Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Zig Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 구조체와 필드 선언하기
- 메서드와 self 매개변수
- 필드 기본값
- 이름 없는 구조체와 튜플