Menu
CoddyTech

속성 접근자

Coddy GDScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 65개 중 12번째.

get: 블록인 프로퍼티의 getter는 프로퍼티를 읽을 때마다 실행되며, 반환하는 값이 읽는 쪽에서 받는 값입니다. 다른 프로퍼티로부터 계산되는 값에 사용하세요:

# rectangle.gd
var width: int = 4
var height: int = 3
var area: int:
	get:
		return width * height
var r := Rectangle.new()
print(r.area) # 12
r.width = 10
print(r.area) # 30

r.area는 괄호 없이 변수처럼 읽지만, 읽을 때마다 다시 계산되므로 항상 현재 너비와 높이에 맞게 유지됩니다.

속성에는 두 블록이 모두 있을 수 있습니다. 여기서 fahrenheit는 변환만 합니다. 읽으면 celsius에서 변환하고, 값을 할당하면 다시 변환한 결과를 celsius에 저장합니다.

# temperature.gd
var celsius: float = 0.0
var fahrenheit: float:
	get:
		return celsius * 9 / 5 + 32
	set(value):
		celsius = (value - 32) * 5 / 9
t.celsius = 25.0
print(t.fahrenheit) # 77.0
t.fahrenheit = 98.6
print(t.celsius) # 37.0

get:만 있는 속성은 관례상 읽기 전용입니다. 여기에 값을 할당해도 오류는 아니지만, getter는 할당된 값을 무시합니다. r.area = 100을 실행한 후에도 r.area는 여전히 30을 반환합니다.

challenge icon

챌린지

쉬움

temperature.gd의 Temperature 클래스를 완성하세요. 이 클래스는 celsius라는 하나의 값을 저장하고, 그 값으로부터 다른 온도 단위를 계산합니다.

  • fahrenheit: getter는 celsius * 9 / 5 + 32를 반환하고, setter는 (value - 32) * 5 / 9를 celsius에 저장합니다.
  • kelvin: getter가 celsius + 273.15를 반환하는 읽기 전용 속성입니다.

제공된 코드는 이어지는 명령의 개수를 읽은 다음, 한 줄에 하나씩 읽습니다. c VALUE는 celsius를 설정하고 f VALUE는 fahrenheit를 설정합니다. 각 명령을 실행한 후 소수점 이하 두 자리까지 세 속성을 출력합니다. c 25, f 98.6, c -40을 입력하면 다음을 출력합니다.

25.00 C | 77.00 F | 298.15 K
37.00 C | 98.60 F | 310.15 K
-40.00 C | -40.00 F | 233.15 K

코드는 temperature.gd에 작성하세요. main.gd에는 제공된 입력/출력 코드가 있으며 수정할 수 없습니다.

직접 해보기

extends Node

func _ready():
	# 제공된 입출력 코드: 그대로 유지하세요
	var temp := Temperature.new()
	var count := int(OS.read_string_from_stdin())
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ")
		if parts[0] == "c":
			temp.celsius = float(parts[1])
		else:
			temp.fahrenheit = float(parts[1])
		print("%.2f C | %.2f F | %.2f K" % [temp.celsius, temp.fahrenheit, temp.kelvin])
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 GDScript 컴파일러