我想用新语言或多个语言扩展std::string StudentRoll::toString() const {
Node* temp = head;
while(temp != NULL){ //my attempt
Student newStudent(*(temp->s));
newStudent.toString(); //toString function from Student class
temp = temp->next;
}
}
。模仿knitr
函数的源代码here,会生成这样的代码,例如,它会添加CoffeeScript CLI支持。
eng_go
您可以将它放在knitr::knit_engines$set( cs = function ( options ) {
f = tempfile( 'code', '.', fileext = '.coffee' )
writeLines( c(
'console.log try',
paste0( ' ', options$code ),
'catch error then error.message'
), f )
on.exit( unlink( f ), add = TRUE )
cmd = Sys.which( 'coffee' )
extra = if ( options$eval ) {
args <- paste0( ' ', f )
message( 'running: ', cmd, args )
tryCatch(
system2( cmd, args, stdout = TRUE, stderr = TRUE, env = options$engine.env ),
error = function ( e ) {
if ( !options$error ) stop( e )
'Error in executing CoffeeScript code'
}
)
}
if ( options$results == 'hide' ) extra = NULL
knitr::engine_output( options, options$code, extra )
} )
文件的代码块中,下一个代码块可以是.Rmd
类型,并且将被解释为我想要的。
我的问题是:是否有任何关于使用新功能扩展基本功能的文档?
特别是,我想知道如何使变量在块中保持不变(通过一次处理所有块?)并根据结果对象的类型自定义输出格式。