1. rude
  2. love


Issue #427 wontfix

love.graphics.print(text, ...) should use tostring() on text argument

Preston Mays
created an issue

Filed against LOVE 0.8.0

The function love.graphics.print() serves a similar purpose to Lua's built-in print() function. However LOVE's printing behavior is surprising in that it does not automatically convert nil, booleans, functions, tables, etc., to strings.

The following code will print values to the console without error:

{{{ function love.load() null = nil bool = true num = 3.14159 str = "hello, world" func = function() end tbl = {}


end }}}

Whereas the following code requires tostring() coercion to print without errors:

{{{ -- snip!

function love.draw() love.graphics.print(tostring(null), 100, 100) love.graphics.print(tostring(true), 100, 115) love.graphics.print(num, 100, 130) love.graphics.print(str, 100, 145) love.graphics.print(tostring(func), 100, 160) love.graphics.print(tostring(tbl), 100, 175) end }}}

It would be useful--especially during building and debugging a project--if LOVE's print function followed Lua's printing idioms regarding basic types, rather than generate errors.

Comments (6)

  1. Bart van Strien

    I'd like to note that love.graphics.print is in no way meant to serve "a similar purpose to Lua's built-in print() function". It is meant to put text on the screen.

  2. Preston Mays reporter

    I do realize that while print() and love.graphics.print() aren't mathematically equivalent, they are biologically isomorphic.

    One defines the universal string output of a table, boolean or function as tostring(table, boolean or function).

  3. Bart van Strien

    Lua's print is sufficiently different from the rest of lua in how it does that, io.write doesn't do anything like it, for instance. In fact, the lua API doesn't even have an easy way of doing this. I'm still not convinced there's a good reason to handle this.

  4. Log in to comment