فهرست منبع

new functions "rename" and "tmpname".
new option 'q' for function "format".
new example, about vararg.

Roberto Ierusalimschy 29 سال پیش
والد
کامیت
f86c1367db
1فایلهای تغییر یافته به همراه46 افزوده شده و 8 حذف شده
  1. 46 8
      manual.tex

+ 46 - 8
manual.tex

@@ -1,4 +1,4 @@
-% $Id: manual.tex,v 1.10 1996/02/12 18:32:09 roberto Exp roberto $
+% $Id: manual.tex,v 1.11 1996/02/16 13:12:12 roberto Exp roberto $
 
 \documentstyle[A4,11pt,bnf]{article}
 
@@ -34,7 +34,7 @@ Waldemar Celes Filho
 \tecgraf\ --- Departamento de Inform\'atica --- PUC-Rio
 }
 
-\date{\small \verb$Date: 1996/02/12 18:32:09 $}
+\date{\small \verb$Date: 1996/02/16 13:12:12 $}
 
 \maketitle
 
@@ -1269,12 +1269,19 @@ following the description given in its first argument (which must be a string).
 The format string follows the same rules as the \verb'printf' family of
 standard C functions.
 The only differencies are that the options/modifiers
- \verb'*', \verb'l', \verb'L', \verb'n', \verb'p',
- and \verb'h' are not supported.
-The options \verb'c',  \verb'd',  \verb'i', \verb'o', \verb'u', 
-\verb'x',  \verb'X', \verb'e',  \verb'E', \verb'f', and \verb'g' all
+\verb'*', \verb'l', \verb'L', \verb'n', \verb'p',
+and \verb'h' are not supported,
+and there is an extra option, \verb'q'.
+This option formats a string in a form suitable to be safely read
+back by the Lua interpreter.
+The string is written between double quotes,
+and all double quotes, returns and backslashes in the string
+are correctly escaped when written.
+
+The options \verb'c', \verb'd', \verb'E', \verb'e', \verb'f',
+\verb'g' \verb'i', \verb'o', \verb'u', \verb'X', and \verb'x' all
 expect a number argument,
-while \verb's' expects a string.
+while \verb'q' and \verb's' expects a string.
 
 
 \subsection{Mathematical Functions} \label{mathlib}
@@ -1360,6 +1367,15 @@ This function returns 2 if the file already exists,
 
 This function deletes the file with the given name.
 
+\subsubsection*{{\tt rename (name1, name2)}}\Deffunc{rename}
+
+This function renames file \verb'name1' to \verb'name2'.
+
+\subsubsection*{{\tt tmpname ()}}\Deffunc{tmpname}
+
+This function returns a string with a file name that can safely
+be used for a temporary file.
+
 \subsubsection*{{\tt read ([format])}}\Deffunc{read}
 
 This function returns a value read from the current input.
@@ -1698,6 +1714,28 @@ end
 \end{verbatim}
 
 
+\subsection{\Index{Variable number of arguments}}
+Lua does not provide any explicit mechanism to deal with
+variable number of arguments.
+However, one can use table constructors to simulate this mechanism.
+As an example, suppose a function to concatenate all its arguments.
+It could be written like 
+\begin{verbatim}
+function concat (o)
+  local i = 1
+  local s = ''
+  while o[i] do
+    s = s .. o[i]
+    i = i+1
+  end
+  return s
+end
+\end{verbatim}
+To call it, one uses a table constructor to join all arguments:
+\begin{verbatim}
+  x = concat{"hello ", "john", " and ", "mary"}
+\end{verbatim}
+
 \subsection{\Index{Persistence}}
 Because of its reflexive facilities,
 persistence in Lua can be achieved within the language.
@@ -1829,7 +1867,7 @@ void Index (void)
 \end{figure}
 This code must be registered with:
 \begin{verbatim}
-  lua_pushliteral("parent");
+  lua_pushstring("parent");
   lockedParentName = lua_lock();
   lua_pushobject(lua_setfallback("index", Index));
   lockedOldIndex = lua_lock();