![](/img/trans.png)
[英]What is difference between the getIdToken and getAppCheckToken?
[英]What is the difference between final and const in Ballerina?
閱讀 Ballerina 上的示例時,我偶然發現了示例https://ballerina.io/learn/by-example/variables.html ,它具有以下代碼:
public const int COUNT = 1;
final int status = 1;
其中第一行僅描述為
聲明一個
public
編譯時常量
第二個是:
聲明一個最終變量。
final
變量的值是只讀的。 一旦將值分配給最終變量,它就變得不可變。 function 調用的所有參數都是隱式最終的。
但這引出了一個問題:final 和 const 有什么區別?
答案隱藏在另一個示例中,在列表后面很多: Const 和 final
final變量和常量的區別在於final變量的值可以在運行時初始化。 但是,常量必須在編譯時初始化。
意思是
function findFoo() returns int {
return 42;
}
public function main() {
// This works
final int foo = findFoo();
}
然而:
function findFoo() returns int {
// this is not allowed
return 42;
}
public function main() {
const int foo = findFoo();
}
以前在語言實現中存在一個錯誤( https://github.com/ballerina-platform/ballerina-lang/issues/15044 ),現已修復:
int foo;
// this previously didn't work, but now does
foo = 32;
也就是說,使用final
允許從 const 不允許的 function (即在運行時)設置值。 目前在這兩種情況下都需要設置一個聲明變量的值,但在未來的版本中(當錯誤修復時),定義可以在代碼的后面。
另一方面(感謝@dhananjaya 指出) const
可用於其他編譯時構造。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.