【问题标题】:What is the "*all* format in lua file:read() means?lua 文件中的“*all* 格式:read() 是什么意思?
【发布时间】:2017-11-14 15:18:03
【问题描述】:

我维护了一些用LUA编写的旧代码,有些sn-p我看不懂,

    local f = io.open("someFile.lua", "r");
    local szFileContent = "return {};";
    if f then
        szFileContent = f:read("*all");
        f:close();
    end

read函数中使用的格式有点奇怪,我在lua51手册https://www.lua.org/manual/5.1/manual.html#pdf-file:read中看到了*a和*l的格式, 但不是 *all 格式

【问题讨论】:

    标签: lua


    【解决方案1】:

    在来自 liolib.c 的函数 read 中,仅检查前两个('*' 和 'a')字符,忽略字符串的其余部分:

    // ...
    const char *p = lua_tostring(L, n);
    luaL_argcheck(L, p && p[0] == '*', n, "invalid option");
    switch (p[1]) {
      case 'n':  /* number */
        success = read_number(L, f);
        break;
      case 'l':  /* line */
        success = read_line(L, f);
        break;
      case 'a':  /* file */
        read_chars(L, f, ~((size_t)0));  /* read MAX_SIZE_T chars */
        success = 1; /* always success */
        break;
      default:
        return luaL_argerror(L, n, "invalid format");
     //...
    

    【讨论】:

    猜你喜欢
    • 2021-03-25
    • 2022-11-24
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2015-01-22
    相关资源
    最近更新 更多