1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-12 14:50:19 +02:00

(Formatted Output): Excess arguments are ignored.

In ~*, correction N parameter cannot be negative.  In ~t, note
port-column used.
This commit is contained in:
Kevin Ryde 2004-09-02 00:12:44 +00:00
parent b8d9526775
commit 471d2c6d22

View file

@ -598,11 +598,11 @@ T-Scheme compatibility.
Argument jumping. Parameter: @var{N}. Argument jumping. Parameter: @var{N}.
Move forward @var{N} arguments (default 1) in the argument list. With Move forward @var{N} arguments (default 1) in the argument list. With
the @nicode{:} modifier move backwards. @var{N} can be negative to the @nicode{:} modifier move backwards. (@var{N} cannot be negative.)
move backwards too.
@example @example
(format #f "~d ~:*~d" 6) @result{} "6 6" (format #f "~d ~2*~d" 1 2 3 4) @result{} "1 4"
(format #f "~d ~:*~d" 6) @result{} "6 6"
@end example @end example
With the @nicode{@@} modifier, move to argument number @var{N}. The With the @nicode{@@} modifier, move to argument number @var{N}. The
@ -613,21 +613,17 @@ first argument is number 0 (and that's the default for @var{N}).
(format #f "~d~d~d ~1@@*~d~d" 1 2 3) @result{} "123 23" (format #f "~d~d~d ~1@@*~d~d" 1 2 3) @result{} "123 23"
@end example @end example
At the end of the format string the last argument must have been
consumed, or a ``too many arguments'' error results. If the last
argument is not the last to be printed, then a move to skip the
remaining must be given. This can be done with the @nicode{#}
parameter (count of remaining arguments).
@example
(format #t "~2*~d" 1 2 3 4) ;; error
(format #t "~2*~d~#*" 1 2 3 4) @result{} 3
@end example
A @nicode{#} move to the end followed by a @nicode{:} modifier move A @nicode{#} move to the end followed by a @nicode{:} modifier move
back can be used for an absolute position relative to the end of the back can be used for an absolute position relative to the end of the
argument list, a reverse of what the @nicode{@@} modifier does. argument list, a reverse of what the @nicode{@@} modifier does.
@example
(format #t "~#*~2:*~a" 'a 'b 'c 'd) @print{} c
@end example
At the end of the format string, the current argument postion doesn't
matter, any further arguments are ignored.
@item @nicode{~t} @item @nicode{~t}
Advance to a column position. Parameters: @var{colnum}, @var{colinc}, Advance to a column position. Parameters: @var{colnum}, @var{colinc},
@var{padchar}. @var{padchar}.
@ -660,6 +656,9 @@ isn't already so.
(format #f "a~3,5'*@@tx") @result{} "a****x" (format #f "a~3,5'*@@tx") @result{} "a****x"
@end example @end example
@nicode{~t} is implemented using @code{port-column} (@pxref{Reading}),
so it works even there has been other output before @code{format}.
@item @nicode{~~} @item @nicode{~~}
Tilde character. Parameter: @var{n}. Tilde character. Parameter: @var{n}.
@ -882,8 +881,8 @@ for a number out of range.
@end example @end example
The @nicode{:} modifier to @nicode{~[} treats the argument as a flag, The @nicode{:} modifier to @nicode{~[} treats the argument as a flag,
and expects two clauses. The first used if the argument is @code{#f} and expects two clauses. The first is used if the argument is
or the second otherwise. @code{#f} or the second otherwise.
@example @example
(format #f "~:[false~;not false~]" #f) @result{} "false" (format #f "~:[false~;not false~]" #f) @result{} "false"
@ -971,9 +970,8 @@ the @nicode{:} modifier insert the format implementation version.
@end table @end table
@sp 1 @sp 1
It's an error if there are too many or not enough arguments for the It's an error if there are not enough arguments for the escapes in the
escapes in the format string. (Unwanted arguments can be skipped with format string, but any excess arguments are ignored.
an argument jump @nicode{~#*} described above if desired.)
Iterations @nicode{~@{} @nicode{~@}} and conditionals @nicode{~[} Iterations @nicode{~@{} @nicode{~@}} and conditionals @nicode{~[}
@nicode{~;} @nicode{~]} can be nested, but must be properly nested, @nicode{~;} @nicode{~]} can be nested, but must be properly nested,