我尝试从picat中的console (stdin)中将一行作为字符串读取,并得到它的另一半:
main =>
L = read_line(),
B = L.length/2,
S = L.slice(1,B),
println(S).使用error(integer_expected(2.0),slice)崩溃
当使用int而不是B时-无崩溃。那么如何将B转换为整数呢?
发布于 2017-06-28 16:09:43
您可以使用内置函数,如floor、round或math module中的ceiling (更多函数here)。所以你可以像这样修改你的代码:
main =>
L = read_line(),
B = round(L.length/2),
S = L.slice(1,B),
println(S).发布于 2015-03-29 02:18:43
尝试使用integer(..)函数将L.length/2转换为整数,或者使用to_integer() function....should为您执行此操作。
发布于 2015-07-30 15:25:50
类型推断在函数计算中起着至关重要的作用。(/ /2)它是一个浮点算术运算符,但slice/2需要一个整数。所以你应该改用( /2)。
Picat> L=read_line(),println(L.slice(1,L.length//2)).
123456789
1234
L = ['1','2','3','4','5','6','7','8','9']
yeshttps://stackoverflow.com/questions/29320748
复制相似问题