Wolfram mathematica 让Return[]执行其正确的(C+;+;)任务

Wolfram mathematica 让Return[]执行其正确的(C+;+;)任务,wolfram-mathematica,return,Wolfram Mathematica,Return,我看到这个站点上有很多关于Return[]函数的线程。甚至对它的行为也有很好的描述。但是如果我对Mathematica真的是新手,会发生什么呢 不用多说,我想使用这个函数: getBinIndex[eta_, pt_, etalimits_, ptlimits_] := List[ For[i = 1, i < Length[etalimits], i++, If[eta < etalimits[[i + 1]], Return

我看到这个站点上有很多关于Return[]函数的线程。甚至对它的行为也有很好的描述。但是如果我对Mathematica真的是新手,会发生什么呢

不用多说,我想使用这个函数:

getBinIndex[eta_, pt_, etalimits_, ptlimits_] := 
     List[
       For[i = 1, i < Length[etalimits],     i++,
           If[eta < etalimits[[i + 1]], Return[i]]], 
       For[i = 1, i < Length[ptlimits], i++,
           If[pt < ptlimits[[i + 1]], Return[i]]]
         ];
getBinIndex[eta_uu,pt_uu,etalimits_uuu,ptlimits_uu]:
名单[
对于[i=1,i
正如你所看到的,我真的是个新手。我想在Mathematica中有一百万种方法可以做到这一点,但我有C的背景,我觉得有必要告诉计算机一切。该函数起作用。它返回一个包含2个变量的列表,经过大量测试,这些变量都是可以的。但它将结果作为两个Return的参数:{Return[4],Return[5]},例如,我不能将其用作…表的索引。要将这些返回[x]转换为x,您需要做什么

为了让你知道我有多像个新手,我尝试了N[Return[I]]

干杯

阿德里安

当然,在mathematica中,你几乎不需要循环。。 差不多

Position[etalimits,ei_/;ei<eta&][[1,1]] 

<代码>位置[EtimimIs],eIi//;这是一个Mathematica标签,希望这个问题现在有意义。它与C++无关。非常感谢乔治。它起作用了(catch版本)。我正在研究Position版本。这很奇怪,所以我的函数结果实际上是一个例外:)。我必须学习更多关于Mathematica的知识。@user2285967您可能会发现这条线索很有用:“谢谢,Alexey!我真的买了Sal Mangano的食谱和Schaum的Mathematica大纲。现在我必须为它们腾出一些时间。
Position[etalimits,ei_/;ei<eta&][[1,1]] 
   For[i = 1, i < Length[etalimits],     i++,
         If[eta < etalimits[[i + 1]], Return[i,CompoundExpression]]];,