在Xtend中使用typeof

时间:2015-08-07 13:05:54

标签: xtend

这可能是Xtend上最愚蠢的问题。但在这里它

我试图将以下内容转换为Xtend

#include <math.h>
#include <stdio.h>
#include <stdlib.h>

/* normalized sinc function */
double sinc(double x)
{
    x *= M_PI;
    if (x == 0.0) return 1.0;
    return sin(x)/x;
} /* sinc */

/* interpolate a function made of in samples at point x */
double sinc_approx(double in[], size_t in_sz, double x)
{
    int i;
    double res = 0.0;
    for (i = 0; i < in_sz; i++)
            res += in[i] * sinc(x - i);
    return res;
} /* sinc_approx */

/* do the actual resampling.  Change (in_sz - 1)/(out_sz - 1) if you
 * don't want the initial and final samples coincide, as is done here.
 */
void resample_sinc(
    double in[],
    size_t in_sz,
    double out[],
    size_t out_sz)
{
    int i;
    double dx = (double) (in_sz-1) / (out_sz-1);
    for (i = 0; i < out_sz; i++)
            out[i] = sinc_approx(in, in_sz, i*dx);
}

/* test case */
int main()
{
    double in[] = {
            0.0, 1.0, 0.5, 0.2, 0.1, 0.0,
    };

    const size_t in_sz = sizeof in / sizeof in[0];
    const size_t out_sz = 5;
    double out[out_sz];
    int i;

    for (i = 0; i < in_sz; i++)
            printf("in[%d] = %.6f\n", i, in[i]);
    resample_sinc(in, in_sz, out, out_sz);
    for (i = 0; i < out_sz; i++)
            printf("out[%.6f] = %.6f\n", (double) i * (in_sz-1)/(out_sz-1), out[i]);

    return EXIT_SUCCESS;
} /* main */

我知道我需要使用if (obj instanceof Integer) { message.reply((Integer)obj); } 函数。

我可以使用typeof作为typeof的直接替代品吗?

1 个答案:

答案 0 :(得分:4)

instanceof是检索类对象的旧语法。如果您正在使用较新版本的Xtend,则不再需要此版本。除此之外,if (obj instanceof Integer) { message.reply(obj as Integer) } 语法与Java类似,但是cast语句不同,所以你会写:

if (obj instanceof Integer) {
    message.reply(obj) // obj is automatically casted to Integer
}

由于支持Xtend 2.5自动播放,因此您甚至可以编写:

var period = 1000;
setInterval(ChangeBG, period);   

function ChangeBG() {
    document.getElementById("divID").style.backgroundColor = 
        rgb(GetRandomValidNumber(), GetRandomValidNumber(), GetRandomValidNumber());
} 
function GetRandomValidNumber() {
    return (Math.floor(Math.random() * 255) + 1);
}