我尝试在picat中从控制台(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转换为整数?
答案 0 :(得分:2)
您可以使用内置函数,例如来自floor
的{{1}},round
或ceiling
(更多函数here)。所以你可以修改你的代码:
math module
答案 1 :(得分:0)
尝试使用integer(..)
函数将L.length/2
转换为整数或使用to_integer()
函数....应该为您执行此操作。
答案 2 :(得分:0)
类型推断在功能评估中起着至关重要的作用。 (/ / 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']
yes