当我在 Jenkinsfile 中加载另一个 groovy 文件时,它显示以下错误。
“缺少所需的上下文类 hudson.FilePath 也许您忘记用提供此内容的步骤包围代码,例如:节点”
我制作了一个包含函数的 groovy 文件,我想在我的声明性 Jenkinsfile 中调用它。但它显示一个错误。
My Jenkinsfile--->
def myfun = load 'testfun.groovy'
pipeline{
agent any
environment{
REPO_PATH='/home/manish/Desktop'
APP_NAME='test'
}
stages{
stage('calling function'){
steps{
script{
myfun('${REPO_PATH}','${APP_NAME}')
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果 -
org.jenkinsci.plugins.workflow.steps.MissingContextVariableException: 缺少必需的上下文类 hudson.FilePath 也许你忘了用提供这个的步骤来包围代码,例如:节点
建议我什么是正确的方法。
在Java中,我有一个以某种方式处理文本文件的函数.但是,如果花费太多时间,该过程很可能对该文本文件无用(无论原因是什么),我想跳过它.此外,如果过程耗时太长,它也会占用太多内存.我试图用这种方式解决它,但它不起作用:
for (int i = 0; i<docs.size(); i++){
try{
docs.get(i).getAnaphora();
}
catch (Exception e){
System.err.println(e);
}
}
Run Code Online (Sandbox Code Playgroud)
where docs只是List目录中的一个文件.通常我必须手动停止代码,因为它"卡在"特定文件(取决于该文件的内容).
有没有办法测量该函数调用的时间,并告诉Java跳过该函数所需的文件,比如10秒?
编辑
在拼凑了几个不同的答案后,我想出了这个解决方案,它工作正常.也许其他人也可以使用这个想法.
首先创建一个实现Runable的类(这样你可以根据需要将参数传递给Thread):
public class CustomRunnable implements Runnable {
Object argument;
public CustomRunnable (Object argument){
this.argument = argument;
}
@Override
public void run() {
argument.doFunction();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在main类中使用此代码来监视函数(argument.doFunction())的时间,如果需要很长时间则退出:
Thread thread;
for (int i = 0; i<someObjectList.size(); i++){
thread = new Thread(new CustomRunnable(someObjectList.get(i)));
thread.start();
long endTimeMillis = System.currentTimeMillis() + 20000;
while (thread.isAlive()) {
if …Run Code Online (Sandbox Code Playgroud) 我一直在浏览ES6,假设切换到EcmaScript 2017很容易.
在经历过的时候,我对这段代码感到困惑
function f (x, y = 7, z = 42) {
return x + y + z
}
f(1) === 50
Run Code Online (Sandbox Code Playgroud)
哪个有ES5等价物
function f (x, y, z) {
if (y === undefined)
y = 7;
if (z === undefined)
z = 42;
return x + y + z;
};
f(1) === 50;
Run Code Online (Sandbox Code Playgroud)
我确实理解了它的默认参数.
但这f(1)===50两个代码的含义是什么?什么用它?
这是另一个例子
function f (x, y, ...a) {
return (x + y) * a.length
}
f(1, 2, "hello", true, 7) === 9
Run Code Online (Sandbox Code Playgroud)
什么 …
我需要能够调用一个函数,但函数名存储在一个变量中,这是可能的.例如:
public void foo ()
{
//code here
}
public void bar ()
{
//code here
}
String functionName = "foo";
Run Code Online (Sandbox Code Playgroud)
//我需要根据functionName调用函数
任何帮助都会很棒,谢谢
如何从vim中的替换字符串调用函数?当我有:
%s/regex/string/g 我希望组作为参数,并将其替换为函数的返回值:
%s/regex/call function(\1)/g 所以组#1将是函数的参数,函数的返回值将替换缓冲区中的所有匹配项.
它可以吗?
我知道函数原型在C++中是强制性的,如果函数是在main()函数之后定义的,但它在C中是可选的(但推荐).我最近编写了一个简单的程序,它执行了2个数字的加法,但错误地使用了点运算符代替传递参数时的逗号.
#include <stdio.h>
int main()
{
printf("sum is: %d",add(15.30)); // oops, uses dot instead of comma
}
int add(int a,int b)
{
return a+b;
}
Run Code Online (Sandbox Code Playgroud)
在上面的程序中,如果在add(int,int)函数之前定义了main()函数,那么程序肯定无法编译.这是因为调用函数时传递的参数少于所需的参数.
但是,为什么上面的程序编译运行正常 - 给出一些大的垃圾值作为输出?是什么原因?使用函数原型设计是否更好,以便编译器检测到类型不匹配以及与函数调用相关的任何其他错误?
这是未定义的行为吗?
是否可以将一个函数及其参数列表传递给另一个函数并稍后从内部调用它?
void testA(int, float, char* ) {}
void testB(int, float, double ) {}
void testC(MyClass, float, double ) {}
template <class T>
void applyA(void(*foo)(void*), std::initializer_list<T> args)
{
foo(/*unpack args somehow*/);
}
template <class T>
void applyB(void(*foo)(void*), std::initializer_list<T> args)
{
MyClass cls;
foo(cls, /*unpack the rest of args*/);
}
int main()
{
applyA(testA, {5, 0.5f, "abc"});
applyA(testB, {5, 0.5f, 1.5});
applyB(testC, {0.5f, 1.5});
}
Run Code Online (Sandbox Code Playgroud) 我仍然不擅长使用R的标准调试工具,而且我经常发现错误和追溯都没有告诉我足以弄清楚发生了什么.我想在出错时更改R的默认行为以提供更多信息.
具体来说,我总是喜欢call,包括formals,分配给每个形式的表达式(默认表达式,如果默认是指定的表达式),以及每个参数表达式的值在适当的位置评估,所有返回的格式为使得哪个表达式与哪个正式表达式以及哪个值与哪个表达式相匹配使得它明确无误.由于值可能很大或者是意外或渐渐消失的类型,我希望它们以一种格式返回,例如a str(),它可以做出关于截断的明智选择并正确识别承诺和其他倾向于将自己评估为某些东西的对象类型在你看到它们之前别的.
最后,对于调用堆栈中的每个函数,我都喜欢所有这些以及每个函数的return值,call从错误回到(并包括)我编写的一些代码.在我看来,自然结构将是一个单独的R对象,一个list列表,每个列表call(可能整理,broom类似,与一些列表列的tibble),我可以以显而易见的方式单步执行.
如果我描述了一些标准的R调试工具,我还没有学会如何正确使用,我很抱歉.这甚至可能吗?如果是,可以通过R的可用错误处理程序实现,还是需要一些程序包规模的编码项目?
我最希望有一个解决方案来更改对此的默认错误响应,但如果这是不切实际的,我会接受一个解决方案,要求我使用包装器或类似的东西重新运行代码块.
尝试使用过滤器提取长度为k的子集。不确定如何处理?该列表包含100个元素。
subsets :: [a] -> [[a]]
subsets [] = [[]]
subsets (x:xs) = [zs | ys <- subsets xs, zs <- [ys, (x:ys)]]
Run Code Online (Sandbox Code Playgroud)
如果我使用过滤器,这就是我的想法:
filter (length(3)) subsets [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
但是我可能错了。如果有其他方法而不是过滤器?我是Haskell的新手,所以不确定。
代码 A 来自Roman Y 回答的问题。
代码A调用with时可以正常工作background(appState)() {...},为什么不能去掉括号()?
但是代码 B 在调用 with 时失败了background(appState) {...},为什么?
而且更多的代码C在调用 with 时可以很好地工作 val aa=background(appState) aa{...},为什么呢?
代码A
@Composable
fun NiaApp(
windowSizeClass: WindowSizeClass,
appState: NiaAppState = rememberNiaAppState(windowSizeClass)
) {
NiaTheme {
background(appState)() {
Scaffold(
...
) { padding ->
}
}
}
}
@Composable
fun background(appState: NiaAppState): @Composable (@Composable () -> Unit) -> Unit =
when (appState.currentDestination?.route) {
ForYouDestination.route -> { content ->
NiaGradientBackground(content = content) }
else -> { content -> …Run Code Online (Sandbox Code Playgroud) lambda function-call higher-order-functions kotlin android-jetpack-compose