-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
🎯 학습 주제
-
String, 변수에 대해서
📖 학습 내용
주요 학습 포인트
🔹 변수 (Variables)
-
변수 선언 방식
- Lua:
local x = 10(동적 타입)
- Lua:
-
전역 변수 vs 지역 변수
- Lua에서
local없이 선언하면 기본적으로 전역 변수 (x = 10)
- Lua에서
-
불변 변수
- Lua에는
final같은 불변 변수 개념이 없음
- Lua에는
-
객체 참조 방식
- Lua에서는 변수에 할당되는 값이 기본적으로 참조 방식으로 동작함.
즉, 변수에 복합 데이터 (테이블 등)를 할당하면 변수에는 데이터의 참조(메모리 주소)가 저장됨. - 기본 데이터 타입 (숫자, 문자열 등)은 값 복사로 동작하지만, 문자열은 불변이기 때문에 변경 시 항상 새로운 문자열이 생성됨.
- Lua에서는 변수에 할당되는 값이 기본적으로 참조 방식으로 동작함.
-
값 복사 vs 참조 복사
- 기본 타입 (숫자, 불리언 등): 값 복사가 발생
local a = 10 local b = a -- b에 a의 값(10) 복사 b = 20 print(a) -- 출력: 10 (b를 변경해도 a에는 영향 없음)
- 테이블 타입 (참조 타입): 참조 복사가 발생
local tableA = {1, 2, 3} local tableB = tableA -- 참조 복사 발생 tableB[1] = 100 print(tableA[1]) -- 출력: 100 (tableB의 변경이 tableA에 영향을 줌)
- 기본 타입 (숫자, 불리언 등): 값 복사가 발생
🔹 문자열 (Strings)
-
문자열 선언
- Lua:
s = "Hello"또는s = 'Hello'
- Lua:
-
불변성 (Immutable)
-
Lua에서 문자열은 불변(Immutable)
-
문자열은 한 번 생성되면 변경이 불가능하며, 수정하는 경우 항상 새로운 문자열이 메모리에 할당됨
local s1 = "Hello" local s2 = s1 .. " World" -- 새로운 문자열이 메모리에 할당 print(s1) -- "Hello" print(s2) -- "Hello World"
-
-
메모리 관리 (참조 복사와 문자열)
- Lua에서 문자열은 값 복사처럼 보이지만 사실 참조 기반으로 최적화됨
- 동일한 문자열이 메모리에 중복으로 저장되지 않으며, 같은 문자열 값은 하나의 메모리 참조로 공유됨
- 하지만 문자열을 변경하거나 이어붙이면 항상 새로운 메모리 블록에 새로운 문자열이 생성됨
- 자바처럼 메모리를 효율적으로 사용하기 위해서임
-
문자열 길이
- Lua:
#s사용
- Lua:
-
문자열 연결 (Concatenation)
- Lua:
s1 .. s2(..연산자)
- Lua:
-
부분 문자열 추출
- Lua:
string.sub(s, 2, 4)
- Lua:
-
문자열 비교
- Lua:
==사용 시 값 비교 (참조가 아닌 내용 비교)
- Lua:
🛠 코드 예제
✅ 변수 선언과 참조 복사
-- 값 복사 (기본 타입)
local a = 10
local b = a
b = 20
print(a) -- 10 (b의 변경이 a에 영향을 주지 않음)
-- 참조 복사 (테이블)
local tableA = {1, 2, 3}
local tableB = tableA
tableB[1] = 100
print(tableA[1]) -- 100 (참조 복사이므로 같은 메모리 공간 공유)Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels