Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在静态类型语言中进行复制?_Java_Python_Return Type - Fatal编程技术网

Java 如何在静态类型语言中进行复制?

Java 如何在静态类型语言中进行复制?,java,python,return-type,Java,Python,Return Type,您不必在Python中声明返回类型,但在Java等其他语言中,您必须事先指定返回类型。那么,我们如何用静态类型语言编写下面的程序呢?返回类型取决于条件是否为真 def f(a): if a > 11: return 200 else: return "not valid" 如果条件为true,则返回类型为int。如果不是,则返回类型为string。在静态类型语言(如Java)中,通常有一个所有其他类型都属于的超级类型。在

您不必在Python中声明返回类型,但在Java等其他语言中,您必须事先指定返回类型。那么,我们如何用静态类型语言编写下面的程序呢?返回类型取决于条件是否为真

def f(a):
    if a > 11:
        return 200
    else:
        return "not valid"

如果条件为true,则返回类型为int。如果不是,则返回类型为string。

在静态类型语言(如Java)中,通常有一个所有其他类型都属于的超级类型。在java中,它是
对象

因此,您可以直接将代码转换为以下内容:

public static Object f(int a) {
    if (a > 11)
        return 200;
    else
        return "not valid";
}
然而,这被认为是糟糕的编程。在这种情况下,您应该抛出一个异常:

public static Object f(int a) throws IllegalArgumentException {
    if (a > 11)
        return 200;
    else
        throw new IllegalArgumentException("not valid");
}

在Java中,异常本质上是“有效”的输出,可以在正常操作之外抛出。如果调用方法没有“捕获”,它们将被程序执行者抛出,并“优雅地崩溃”应用程序。

在静态类型语言中,如Java,通常有一个所有其他类型都属于的超级类型。在java中,它是
对象

因此,您可以直接将代码转换为以下内容:

public static Object f(int a) {
    if (a > 11)
        return 200;
    else
        return "not valid";
}
然而,这被认为是糟糕的编程。在这种情况下,您应该抛出一个异常:

public static Object f(int a) throws IllegalArgumentException {
    if (a > 11)
        return 200;
    else
        throw new IllegalArgumentException("not valid");
}

在Java中,异常本质上是“有效”的输出,可以在正常操作之外抛出。如果调用方法没有“捕获”,它们将被程序执行器抛出,并“优雅地崩溃”应用程序。

在Java或任何其他支持异常的语言中,您将引发异常。这就是例外情况:

int f (int a) {
    if (a > 11) return 200;
    throw new Exception();
}
在不支持异常的语言中(例如C),您将返回一个sentinel:一个不可能是真实响应的值:

int f (int a) {
    if (a > 11) return 200;
    return -1; // Or 0, or any other invalid number
}

有些语言(Rust、Erlang)允许您返回元组。您可以使用元组的第一个元素作为状态(error/success),第二个元素作为成功时的实际返回值。

在Java或任何其他支持异常的语言中,您将引发异常。这就是例外情况:

int f (int a) {
    if (a > 11) return 200;
    throw new Exception();
}
在不支持异常的语言中(例如C),您将返回一个sentinel:一个不可能是真实响应的值:

int f (int a) {
    if (a > 11) return 200;
    return -1; // Or 0, or any other invalid number
}

有些语言(Rust、Erlang)允许您返回元组。您可以使用元组的第一个元素作为状态(error/success),第二个元素作为成功情况下的实际返回值。

在Java中,您可以使用返回类型
Object
,但实际上,您通常不会编写这样的函数,因为它没有用处。如果您的输入无效,您将抛出一个异常。即使在Python中,这也是糟糕的代码-调用者必须检查类型以确定函数是否“工作”。根据使用情况,引发异常或不返回异常。或者可能是一个元组
(值,错误)
,尽管在这种情况下它似乎没有用处。在Java中,您可以使用返回类型
对象
,但在实践中,您通常不会编写这样的函数,因为它没有用处。如果您的输入无效,您将抛出一个异常。即使在Python中,这也是糟糕的代码-调用者必须检查类型以确定函数是否“工作”。根据使用情况,引发异常或不返回异常。或者可能是一个元组
(值,错误)
,尽管在这种情况下这似乎没有什么用处。在Java或任何其他支持异常的语言中,您可能会引发异常-包括Python!返回一个整数表示成功,返回一个字符串表示失败,这给调用方检查类型带来了无意义的负担。返回
None
也是一种可能性;在Java或任何其他支持异常的语言中,你会引发一个异常——包括Python!返回一个整数表示成功,返回一个字符串表示失败,这给调用方检查类型带来了无意义的负担。返回
None
也是一种可能性;我会把它归入“哨兵”类别。