瀏覽代碼

Add note in `Callable` documentation about methods of native types

- Adds a workaround/code example too.
- Fixes #58912 (the issue itself is not a bug, but the solution was to add a documentation entry about the "issue")
Adam Scott 2 年之前
父節點
當前提交
810806e6b5
共有 1 個文件被更改,包括 11 次插入0 次删除
  1. 11 0
      doc/classes/Callable.xml

+ 11 - 0
doc/classes/Callable.xml

@@ -46,6 +46,17 @@
 		    # Prints "Attack!", when the button_pressed signal is emitted.
 		    # Prints "Attack!", when the button_pressed signal is emitted.
 		    button_pressed.connect(func(): print("Attack!"))
 		    button_pressed.connect(func(): print("Attack!"))
 		[/codeblock]
 		[/codeblock]
+		[b]Note:[/b] Methods of native types such as [Signal], [Array], or [Dictionary] are not of type [Callable] in order to avoid unnecessary overhead. If you need to pass those methods as [Callable], use a lambda function as a wrapper.
+		[codeblock]
+		func _init():
+		    var my_dictionary = { "hello": "world" }
+
+		    # This will not work, `clear` is not a callable.
+		    create_tween().tween_callback(my_dictionary.clear)
+
+		    # This will work, as lambdas are custom callables.
+		    create_tween().tween_callback(func(): my_dictionary.clear())
+		[/codeblock]
 	</description>
 	</description>
 	<tutorials>
 	<tutorials>
 	</tutorials>
 	</tutorials>