内部函数