perl中的电子表格::ParseExcel模块
当我处理类和对象时,我总是感到困惑。当我试图理解perl中的电子表格::ParseExcel模块,perl,Perl,当我处理类和对象时,我总是感到困惑。当我试图理解电子表格::ParseExcel模块时,我对其类和对象有一些疑问: 我的疑问是: 使用$parser=Spreadsheet::ParseExcel->new(),我们正在为电子表格::ParseExcel创建一个对象,然后我们将为电子表格::ParseExcel::工作簿创建一个对象 为什么我们不能直接为电子表格::解析Excel::工作簿创建对象并开始解析 谢谢想想电子表格::ParseExcel和电子表格::ParseExcel::工作簿就像
电子表格::ParseExcel
模块时,我对其类和对象有一些疑问:
我的疑问是:
使用$parser=Spreadsheet::ParseExcel->new()
,我们正在为电子表格::ParseExcel
创建一个对象,然后我们将为电子表格::ParseExcel::工作簿
创建一个对象为什么我们不能直接为
电子表格::解析Excel::工作簿创建对象并开始解析
谢谢想想电子表格::ParseExcel
和电子表格::ParseExcel::工作簿
就像它们是不同的类型一样,比如整数和字符串,它们都是标量,但是你不能,比如说,将它们相乘,尽管它们在某些情况下可以相互作用。例如,应用于字符串的length()
为您提供字符串的整数长度。同样,Spreadsheet::ParseExcel::parse()
为您提供Spreadsheet::ParseExcel::工作簿
。它们由公共名称空间绑定,但它们完全不同,电子表格::ParseExcel
是一个解析器,电子表格::ParseExcel::工作簿
是一个工作簿。想想电子表格::ParseExcel
和电子表格::ParseExcel::工作簿
就像它们是不同的类型一样,就像整数和字符串一样,它们都是标量,但不能将它们相乘,尽管它们在某些情况下可以相互作用。例如,应用于字符串的length()
为您提供字符串的整数长度。同样,Spreadsheet::ParseExcel::parse()
为您提供Spreadsheet::ParseExcel::工作簿
。它们由公共名称空间绑定,但完全不同,Spreadsheet::ParseExcel
是解析器,Spreadsheet::ParseExcel::Workbook
是工作簿
为什么我们不能直接为电子表格::ParseExcel::工作簿创建对象并开始解析
这是一个合理的问题,在旧版本的电子表格::ParseExcel中,有一个电子表格::ParseExcel::工作簿->Parse()
方法就是这样做的。(*)
用户往往只将Excel文件视为工作簿。但是,文件格式还包含元数据(作者、创建日期等)和vba宏等与工作簿数据分开的数据
因此,解析器与工作簿的逻辑划分可能是由于文件中数据的物理划分
或者,它可能允许报告文件解析错误,而不仅仅是返回未定义的工作簿对象
无论哪种方式,其他人可能会选择不同的界面建模方式,但这正是原作者所选择的。这不是完全直观的,但它是有效的
(*)此方法现在已被弃用,因为它不允许对文件进行错误检查
为什么我们不能直接为电子表格::ParseExcel::工作簿创建对象并开始解析
这是一个合理的问题,在旧版本的电子表格::ParseExcel中,有一个电子表格::ParseExcel::工作簿->Parse()
方法就是这样做的。(*)
用户往往只将Excel文件视为工作簿。但是,文件格式还包含元数据(作者、创建日期等)和vba宏等与工作簿数据分开的数据
因此,解析器与工作簿的逻辑划分可能是由于文件中数据的物理划分
或者,它可能允许报告文件解析错误,而不仅仅是返回未定义的工作簿对象
无论哪种方式,其他人可能会选择不同的界面建模方式,但这正是原作者所选择的。这不是完全直观的,但它是有效的
(*)此方法现在已被弃用,因为它不允许对文件进行错误检查