【Godot】一个简单的lambda表达式和匿名方法的使用

Godot 4.0 beta3

Godot 4.0 中添加了 lambda 表达式,匿名方法等很多方便的特性,这里我写个用于扫描目录下所有文件的功能

可以看到代码非常简洁

func test():
    # Callable 方法,扫描目录下所有的文件
    # [code]path[/code]     要扫描的路径
    # [code]callback[/code] 回调方法,这里用来再次调用自己
    # [code]list[/code]     存入路径到这个数组里
    var scan_dir = func(path:String, callback:Callable, list: Array):
        var dir = DirAccess.open(path)
        if dir:
            # 添加文件
            list.append_array(Array(dir.get_files()).map( func(file):
                # 给文件名加上路径
                return path.path_join(file)
            ) )
            # 继续递归扫描
            for d in dir.get_directories():
                callback.call(path.path_join(d), callback, list)

    # 执行方法
    var file_list = []
    scan_dir.call("res://", scan_dir, file_list)

    # 输出目录及子目录下所有文件
    print(file_list)

发表评论