当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R srcfile 对源文件和代码的引用


R语言 srcfile 位于 base 包(package)。

说明

这些函数用于处理源文件,更一般地用于“source references”("srcref"),即对源代码的引用。生成的数据用于打印和源代码级调试,并且通常以交互方式提供R会话,即当options(keep.source = TRUE).

用法

srcfile(filename, encoding = getOption("encoding"), Enc = "unknown")
srcfilecopy(filename, lines, timestamp = Sys.time(), isFile = FALSE)
srcfilealias(filename, srcfile)
getSrcLines(srcfile, first, last)
srcref(srcfile, lloc)
## S3 method for class 'srcfile'
print(x, ...)
## S3 method for class 'srcfile'
summary(object, ...)
## S3 method for class 'srcfile'
open(con, line, ...)
## S3 method for class 'srcfile'
close(con, ...)
## S3 method for class 'srcref'
print(x, useSource = TRUE, ...)
## S3 method for class 'srcref'
summary(object, useSource = FALSE, ...)
## S3 method for class 'srcref'
as.character(x, useSource = TRUE, to = x, ...)
.isOpen(srcfile)

参数

filename

文件的名称。

encoding

文件采用的字符编码。

Enc

用于制作字符串的编码:请参阅 parseencoding 参数。

lines

源行的字符向量。其他R对象将被强制为字符。

timestamp

用于文件副本的时间戳。

isFile

已知此 srcfilecopy 来自文件系统文件吗?

srcfile

srcfile 对象。

first , last , line

行号。

lloc

由四个、六个或八个值组成的向量,给出源位置;查看具体信息'。

x , object , con

适当类的对象。

useSource

是否读取 srcfile 来获取 srcref 的文本。

to

可选的第二个 srcref 对象,用于标记字符范围的结尾。

...

方法的附加参数;这些将被忽略。

细节

这些函数和类处理源代码引用。

srcfile 函数生成 srcfile 类的对象,其中包含源代码文件的名称和目录及其时间戳,用于源代码级调试(尚未实现)和源回显。保存文件的编码;有关编码的讨论,请参阅file;有关平台上允许的编码的列表,请参阅iconvlist

srcfilecopy 函数生成后代类 srcfilecopy 的对象,该对象将源代码行保存在字符向量中。它复制 isFile 参数的值,以帮助调试器识别该文本是否来自文件系统中的真实文件。

srcfilealias 函数生成后代类 srcfilealias 的对象,该对象为另一个 srcfile 提供备用名称。这是在使用 #line 指令时由解析器生成的。

getSrcLines 函数从 srcfile 读取指定行。

srcref 函数生成 srcref 类的对象,该对象说明 srcfile 中的字符范围。 lloc 值给出以下值:

c(first_line, first_byte, last_line, last_byte, first_column,
  last_column, first_parsed, last_parsed)

由于多字节字符,字节(元素 2、4)和列(元素 5、6)可能会有所不同。如果仅给出四个值,则假定列和字节匹配。如果在代码中使用 #line 指令,行(元素 1、3)和解析的行(元素 7、8)可能会有所不同:前者将遵循该指令,后者只会计算行数。如果仅给出 4 或 6 个元素,则将假定解析的行与这些行匹配。

为类 srcfilesrcfilecopy 定义了 printsummaryopenclose 的方法。 open 方法在特定行打开其内部 file 连接;如果它已经打开,它将被重新定位到该行。

方法定义为print,summaryas.character上课srcref。这as.character方法将读取关联的源文件以获取与引用相对应的文本。如果to给出了参数,它应该是第二个srcref位于同一文件中的第一个之后;它们将被视为整个范围的一个参考。确切的行为取决于源文件的类。如果源文件继承自类srcfilecopy,这些行是使用 “parsed” 行计数从保存的副本中获取的。如果没有,则尝试读取该文件以及该文件的原始行号srcref使用记录(即元素 1 和 3)。如果发生错误(例如,文件不再存在),则显示类似“⁠<srcref:"file" 字符 1:1 到 2:10>⁠' 将被返回,表明line:column第一个和最后一个字符的范围。这summary方法默认为这种类型的显示。

列表srcref对象可以附加到表达式作为"srcref"属性。 (名单srcref对象的长度应与表达式相同。)默认情况下,表达式由print.default使用相关的srcref。要查看已解析的代码,请调用print有论点useSource = FALSE。如果一个srcref对象打印有useSource = FALSE, 这 '⁠<srcref: \dots>⁠’ 记录将被打印。

.isOpen 供内部使用:它检查与 srcfile 对象关联的连接是否打开。

srcfile 返回 srcfile 对象。

srcfilecopy 返回 srcfilecopy 对象。

getSrcLines 返回源代码行的字符向量。

srcref 返回 srcref 对象。

例子

 # has timestamp
src <- srcfile(system.file("DESCRIPTION", package = "base"))
summary(src)
getSrcLines(src, 1, 4)
ref <- srcref(src, c(1, 1, 2, 1000))
ref
print(ref, useSource = FALSE)

作者

Duncan Murdoch

也可以看看

getSrcFilename 用于从源引用中提取信息,或 removeSource 用于从(非原始)函数(又名 ‘closure’)中删除信息。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 References to Source Files and Code。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。