改为更具有通用性的方法