當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。