当前在 Zig 中获取用户输入的方式
Current Way to Get User Input in Zig
我在 Zig 的 'comptime' 上关注 this blog post。
Zig 中不再编译以下行 0.6.0
。
const user_input = try io.readLineSlice(buf[0..]);
下面是完整的函数:
fn ask_user() !i64 {
var buf: [10]u8 = undefined;
std.debug.warn("A number please: ");
const user_input = try io.readLineSlice(buf[0..]);
return fmt.parseInt(i64, user_input, 10);
}
当前版本(获取用户输入)的等效项是什么?
您可以使用 readUntilDelimiterOrEof
of stdin
方法代替:
const stdin = std.io.getStdIn().reader();
pub fn readUntilDelimiterOrEof(self: @TypeOf(stdin), buf: []u8, delimiter: u8) !?[]u8
所以,代码可以是:
fn ask_user() !i64 {
const stdin = std.io.getStdIn().reader();
const stdout = std.io.getStdOut().writer();
var buf: [10]u8 = undefined;
try stdout.print("A number please: ", .{});
if (try stdin.readUntilDelimiterOrEof(buf[0..], '\n')) |user_input| {
return std.fmt.parseInt(i64, user_input, 10);
} else {
return @as(i64, 0);
}
}
另请参阅:Zig 0.7.0 documentation。
我在 Zig 的 'comptime' 上关注 this blog post。
Zig 中不再编译以下行 0.6.0
。
const user_input = try io.readLineSlice(buf[0..]);
下面是完整的函数:
fn ask_user() !i64 {
var buf: [10]u8 = undefined;
std.debug.warn("A number please: ");
const user_input = try io.readLineSlice(buf[0..]);
return fmt.parseInt(i64, user_input, 10);
}
当前版本(获取用户输入)的等效项是什么?
您可以使用 readUntilDelimiterOrEof
of stdin
方法代替:
const stdin = std.io.getStdIn().reader();
pub fn readUntilDelimiterOrEof(self: @TypeOf(stdin), buf: []u8, delimiter: u8) !?[]u8
所以,代码可以是:
fn ask_user() !i64 {
const stdin = std.io.getStdIn().reader();
const stdout = std.io.getStdOut().writer();
var buf: [10]u8 = undefined;
try stdout.print("A number please: ", .{});
if (try stdin.readUntilDelimiterOrEof(buf[0..], '\n')) |user_input| {
return std.fmt.parseInt(i64, user_input, 10);
} else {
return @as(i64, 0);
}
}
另请参阅:Zig 0.7.0 documentation。