소스 검색

Merge pull request #58262 from Sauermann/fix-range-doc

Describe usage of float in range documentation
Max Hilbrunner 3 년 전
부모
커밋
57838fc0ee
2개의 변경된 파일13개의 추가작업 그리고 1개의 파일을 삭제
  1. 12 0
      modules/gdscript/doc_classes/@GDScript.xml
  2. 1 1
      modules/gdscript/gdscript_analyzer.cpp

+ 12 - 0
modules/gdscript/doc_classes/@GDScript.xml

@@ -186,6 +186,7 @@
 			<description>
 				Returns an array with the given range. Range can be 1 argument [code]N[/code] (0 to [code]N[/code] - 1), two arguments ([code]initial[/code], [code]final - 1[/code]) or three arguments ([code]initial[/code], [code]final - 1[/code], [code]increment[/code]). Returns an empty array if the range isn't valid (e.g. [code]range(2, 5, -1)[/code] or [code]range(5, 5, 1)[/code]).
 				Returns an array with the given range. [code]range()[/code] can have 1 argument N ([code]0[/code] to [code]N - 1[/code]), two arguments ([code]initial[/code], [code]final - 1[/code]) or three arguments ([code]initial[/code], [code]final - 1[/code], [code]increment[/code]). [code]increment[/code] can be negative. If [code]increment[/code] is negative, [code]final - 1[/code] will become [code]final + 1[/code]. Also, the initial value must be greater than the final value for the loop to run.
+				[code]range()(/code] converts all arguments to [int] before processing.
 				[codeblock]
 				print(range(4))
 				print(range(2, 5))
@@ -211,6 +212,17 @@
 				6
 				3
 				[/codeblock]
+				To iterate over [float], convert them in the loop.
+				[codeblock]
+				for i in range (3, 0, -1):
+				    print(i / 10.0)
+				[/codeblock]
+				Output:
+				[codeblock]
+				0.3
+				0.2
+				0.1
+				[/codeblock]
 			</description>
 		</method>
 		<method name="str" qualifiers="vararg">

+ 1 - 1
modules/gdscript/gdscript_analyzer.cpp

@@ -1251,7 +1251,7 @@ void GDScriptAnalyzer::resolve_for(GDScriptParser::ForNode *p_for) {
 	bool list_resolved = false;
 
 	// Optimize constant range() call to not allocate an array.
-	// Use int, Vector2, Vector3 instead, which also can be used as range iterators.
+	// Use int, Vector2i, Vector3i instead, which also can be used as range iterators.
 	if (p_for->list && p_for->list->type == GDScriptParser::Node::CALL) {
 		GDScriptParser::CallNode *call = static_cast<GDScriptParser::CallNode *>(p_for->list);
 		GDScriptParser::Node::Type callee_type = call->get_callee_type();