Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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
(Vala)带字符串模板的无主字符串返回类型_Vala - Fatal编程技术网

(Vala)带字符串模板的无主字符串返回类型

(Vala)带字符串模板的无主字符串返回类型,vala,Vala,不起作用。并且在没有无主的情况下工作 为什么??我看到: Vala中的文字字符串始终由程序模块本身拥有 -在 与普通字符串文字不同,字符串模板不属于程序模块所有?或者我误解了什么?当您使用字符串模板时,它会自动“调用” 因此,虽然实际的模板文本可能由程序模块拥有,但生成的字符串将是正常拥有的字符串(在临时变量中) 因此,字符串模板的结果不属于程序模块,而是属于它所在的方法。因此,编译器消息是正确的。使用字符串模板时,它会自动“调用” 因此,虽然实际的模板文本可能由程序模块拥有,但生成的字符串将是

不起作用。并且在没有
无主的情况下工作

为什么??我看到:

Vala中的文字字符串始终由程序模块本身拥有
-在


与普通字符串文字不同,字符串模板不属于程序模块所有?或者我误解了什么?

当您使用字符串模板时,它会自动“调用”

因此,虽然实际的模板文本可能由程序模块拥有,但生成的字符串将是正常拥有的字符串(在临时变量中)


因此,字符串模板的结果不属于程序模块,而是属于它所在的方法。因此,编译器消息是正确的。

使用字符串模板时,它会自动“调用”

因此,虽然实际的模板文本可能由程序模块拥有,但生成的字符串将是正常拥有的字符串(在临时变量中)


因此,字符串模板的结果不属于程序模块,而是属于它所在的方法。因此,编译器消息是正确的。

字符串模板不是文本字符串

可以在编译时计算文本,因此编译器只需在编译程序中包含字符串的副本。字符串模板OTOH通常在编译时是未知的(想象一下,如果您将
x
作为参数传入,或者从实例或全局变量获取它),那么内存在堆上分配,字符串的内容在运行时计算


换句话说,字符串模板基本上是调用
string.printf
(或者,从C的角度来看,
g\u strdup\u printf
)的语法糖。

字符串模板不是文字字符串

可以在编译时计算文本,因此编译器只需在编译程序中包含字符串的副本。字符串模板OTOH通常在编译时是未知的(想象一下,如果您将
x
作为参数传入,或者从实例或全局变量获取它),那么内存在堆上分配,字符串的内容在运行时计算


换句话说,字符串模板基本上是调用
string.printf
(或者,从C的角度来看,
g\u strdup\u printf
)的语法糖。

字符串模板是连接字符串和变量的简写。因此,您的程序可以被视为等同于:

unowned string to_string () {
    int x = 0;
    return @"$x";
    // error: Return value transfers ownership but method return type
    // hasn't been declared to transfer ownership
}
字符串模板为您调用
to_string()
方法。上面的示例产生相同的错误。也许错误消息不太有帮助,但是你需要考虑为什么返回一个未拥有的字符串。< /P>
使字符串无主将关闭Vala对该字符串的内存管理。如果返回一个常量,这可能是相关的,但在您的示例中,字符串是在运行时创建的,因此在堆上分配。这意味着您要使用Vala的内存管理。通常,您应该让Vala使用其默认设置进行内存管理。

字符串模板是连接字符串和变量的简写。因此,您的程序可以被视为等同于:

unowned string to_string () {
    int x = 0;
    return @"$x";
    // error: Return value transfers ownership but method return type
    // hasn't been declared to transfer ownership
}
字符串模板为您调用
to_string()
方法。上面的示例产生相同的错误。也许错误消息不太有帮助,但是你需要考虑为什么返回一个未拥有的字符串。< /P> 使字符串无主将关闭Vala对该字符串的内存管理。如果返回一个常量,这可能是相关的,但在您的示例中,字符串是在运行时创建的,因此在堆上分配。这意味着您要使用Vala的内存管理。通常,您应该让Vala使用其默认设置进行内存管理