any choice = io:readln("Enter choice 1 - 5: ");
Run Code Online (Sandbox Code Playgroud)
我似乎无法将输入转换为 int。
检查和匹配都会给出相同的错误
var intChoice = <int>choice;
match intChoice {
int value => c = value;
error err => io:println("error: " + err.message);
}
Run Code Online (Sandbox Code Playgroud)
和
c = check <int>choice;
Run Code Online (Sandbox Code Playgroud)
给出
error: 'string' cannot be cast to 'int'
Run Code Online (Sandbox Code Playgroud)
我查看了https://ballerina.io/learn/by-example/type-conversion.html并研究了https://ballerina.io/learn/api-docs/ballerina/io.html#readln但没有运气。
我究竟做错了什么?
看起来这是any -> int转换中的一个错误。
如果使用 更改选择变量类型string或将变量定义语句更改为赋值语句var,则两种方法都有效。请参考下面的例子。
import ballerina/io;
function main(string... args) {
// Change the any to string or var here.
string choice = io:readln("Enter choice 1 - 5: ");
int c = check <int>choice;
io:println(c);
var intChoice = <int>choice;
match intChoice {
int value => io:println(value);
error err => io:println("error: " + err.message);
}
}
Run Code Online (Sandbox Code Playgroud)
更新- 正如@supun 在下面提到的,这不是any->int转换中的错误,而是我不知道的实现细节。